Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 日期时间插入错误_C#_Winforms_Datetime - Fatal编程技术网

C# 日期时间插入错误

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

我在尝试使用c#以编程方式输入DateTime时遇到了下面提到的问题

错误消息:

nvarchar数据类型转换为datetime数据类型导致值超出范围


}

您的参数类型是
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);