C# 日期时间插入错误
我在尝试使用c#以编程方式输入DateTime时遇到了下面提到的问题 错误消息: nvarchar数据类型转换为datetime数据类型导致值超出范围C# 日期时间插入错误,c#,winforms,datetime,C#,Winforms,Datetime,我在尝试使用c#以编程方式输入DateTime时遇到了下面提到的问题 错误消息: nvarchar数据类型转换为datetime数据类型导致值超出范围 }您的参数类型是DateTime。使用DateTime参数而不是string SqlParameter pa2 = new SqlParameter("@DTime", DbType.DateTime); pa2.Value = DateTime.Now; cmd1.Parameters.Add(pa2); 换行 pa2.Value = Da
}您的参数类型是
DateTime
。使用DateTime
参数而不是string
SqlParameter pa2 = new SqlParameter("@DTime", DbType.DateTime);
pa2.Value = DateTime.Now;
cmd1.Parameters.Add(pa2);
换行
pa2.Value = DateTime.Now.ToString();
到
您正在定义一个类型为DateTime的参数,但随后尝试在需要DateTime的位置插入一个字符串
作为代码的旁注。所有初始化SqlDataAdapter并设置其insert命令的操作都是无用的,因为您直接(应该)调用该命令上的ExecuteOnQuery
我还建议在你的一次性物品周围使用
using(SqlConnection con = new SqlConnection(... connection string ....))
using(SqlCommand cmd = new SqlCommand(...command text...., con))
{
con.Open();
cmd.Parameters.Add(......);
cmd.ExecuteNonQuery();
}
这就是问题所在:
SqlParameter pa2 = new SqlParameter("@DTime", DbType.DateTime);
pa2.Value = DateTime.Now.ToString();
您已经说过该参数是一个日期时间
,但随后您将其转换为一个字符串-并且很可能在与服务器期望的不同的区域性中这样做。(我怀疑这就是导致错误的原因。)
尽可能避免字符串转换-您只需要:
pa2.Value = DateTime.Now;
或者可能:
pa2.Value = DateTime.UtcNow;
请注意,为方便起见,您可以在一行中完成这一切:
cmd1.Parameters.Add("@DTime", SqlDbType.DateTime).Value = DateTime.Now;
问题在于:
SqlParameter pa2 = new SqlParameter("@DTime", DbType.DateTime);
pa2.Value = DateTime.Now.ToString();
cmd1.Parameters.Add(pa2);
在第一行,您将pa定义为DateTime对象,但在下一行,此对象将转换为字符串
这是正确的代码
SqlParameter pa2 = new SqlParameter("@DTime", DbType.DateTime);
pa2.Value = DateTime.Now;
cmd1.Parameters.Add(pa2);
如果你得到了答案,别忘了接受它。
SqlParameter pa2 = new SqlParameter("@DTime", DbType.DateTime);
pa2.Value = DateTime.Now.ToString();
cmd1.Parameters.Add(pa2);
SqlParameter pa2 = new SqlParameter("@DTime", DbType.DateTime);
pa2.Value = DateTime.Now;
cmd1.Parameters.Add(pa2);