Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.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# 插入数据库时发生datetime错误_C#_.net_Winforms_Datetime - Fatal编程技术网

C# 插入数据库时发生datetime错误

C# 插入数据库时发生datetime错误,c#,.net,winforms,datetime,C#,.net,Winforms,Datetime,我的数据库中有datetime数据类型的字段 我将日期分析如下: DateTime dt = DateTime.ParseExact(fileDate, "dd/MM/yyyy", CultureInfo.InvariantCulture); cmd= new SqlCommand("insert into closingStock values('" + subLine[1].ToString() + "','"

我的数据库中有datetime数据类型的字段

我将日期分析如下:

DateTime dt = DateTime.ParseExact(fileDate, "dd/MM/yyyy",
                                  CultureInfo.InvariantCulture);
cmd= new SqlCommand("insert into closingStock values('" + subLine[1].ToString() +
     "','" + subLine[2].ToString() + "','" + DateTime.Parse(subLine[3]) + "','" +
     subLine[10].ToString() + "','" + dt + "')", con);
cmd.ExecuteNonQuery();
将其插入数据库时,我的操作如下:

DateTime dt = DateTime.ParseExact(fileDate, "dd/MM/yyyy",
                                  CultureInfo.InvariantCulture);
cmd= new SqlCommand("insert into closingStock values('" + subLine[1].ToString() +
     "','" + subLine[2].ToString() + "','" + DateTime.Parse(subLine[3]) + "','" +
     subLine[10].ToString() + "','" + dt + "')", con);
cmd.ExecuteNonQuery();
它给了我以下错误:

String was not recognized as valid datetime.
我犯了什么错误

您可以尝试:

编辑1
我认为您得到的异常是由于
DateTime.Parse(子行[3])
,请为此检查
DateTime
格式。

我多次遇到此错误,我使用字符串作为我的DateTime字段:

string myDate= DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString()
   + "-" + DateTime.Now.Day.ToString() + " " + DateTime.Now.Hour.ToString() 
   + ":" + DateTime.Now.Minute.ToString() + ":" + DateTime.Now.Second.ToString() 
   + "." + DateTime.Now.Millisecond.ToString();

然后我把这个字符串插入我的表中,效果很好

您应该使用参数化查询。这样,您就不必担心查询的格式是否正确,只需将其设置为正确的日期时间

给出正确解析的日期时间(根据Arshad的回答):


错误:您没有使用参数化查询,请阅读我认为其解析相关的错误1)尝试打印sql命令,以查看您真正发送到数据库的内容;2) 阅读sql参数,它们将为您节省大量的麻烦(包括此日期格式)。我的数据库中的datetime字段用于日期存储。我不知道您在做什么,我总是使用datetime,这种技术对我来说很好(sql Server 2008)。您真的应该尝试一种更简单的方法。不能保证调用
DateTime.Now
6次将返回6次完全相同的日期和时间。喜欢一个单独的(更轻的)命令,如
DateTime.Now.ToString(“s”,CultureInfo.InvariantCulture)
DateTime.Now.ToString(“yyyyy-MM-dd-HH\:MM\:ss”)
。你能分享表格结构吗?你能告诉我
DateTime.Parse(子行[3])的日期时间格式是什么吗。每个人都这样建议我。这有什么区别?我想知道。首先,你不必担心日期应该如何显示,比如说
“yyyy-MM-dd”
“yyy.MM.dd”
#MM/dd/yy
。SqlCommand处理该格式,添加所需的引号。对于字符串和数字也是一样,它格式化它需要的格式。此外,如果字符串有引号,也将处理引号。最糟糕的强制转换方案是,如果您尝试输入其他SQL代码作为值,例如
”;删除所有表;
。使用您的方法,这将删除您的数据库。使用参数,您将记录它并保留数据库。