C# 插入数据库时发生datetime错误
我的数据库中有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 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代码作为值,例如”;删除所有表;
。使用您的方法,这将删除您的数据库。使用参数,您将记录它并保留数据库。