将字符串值传递给SQL server

本文关键字:SQL server 字符串 值传 | 更新日期: 2023-09-27 18:08:43

我使用SQL在c#中从SQL- server检索数据,如下所示:

var cmd = new SqlCommand(
    "select *, replace(trucknocn, char(10), '') trucknocn1 from deliverylist  where deliverydate=@scantime", sqlCon);             
cmd.Parameters.Add("@scantime", SqlDbType.VarChar, 10).Value
    = Calendar1.SelectedDate.ToString("yyyy-MM-dd");            
da.SelectCommand = cmd;

我的问题是,我这样做是正确的,以避免我的客户端应用程序机器的区域设置问题。我能做些什么来完全避免区域设置问题?

谢谢

将字符串值传递给SQL server

deliverydatevarchar吗?我不这么认为。
你可以直接添加DateTime参数:

cmd.Parameters.Add("@scantime", SqlDbType.DateTime).Value = Calendar1.SelectedDate;

那么所有的区域设置问题都解决了,因为没有字符串->日期->字符串转换,比较是根据实际日期值进行的,而不仅仅是字符串表示。

如果deliverydate是varchar类型,那么我没有发现你的代码有任何问题,

但是如果deliverydate是datetime,那么修改代码如下-

cmd.Parameters。Add("@scantime SqlDbType。VarChar(10)。Value = Calendar1.SelectedDate.ToString("yyyy-MM-dd");

新代码:

cmd.Parameters。添加(@scantime SqlDbType.DateTime)。Value = Calendar1.SelectedDate;