我有将数据插入SQL服务器数据库的程序
var format = "dd/MM/yyyy HH:mm:ss.mmm";
date = DateTime.Now.ToString(format);
我也试过这个:"yyyy-MM-dd HH:mm:ss.fff";
updateEvent_list = string.Format(@"INSERT INTO Events_List
(date, Object,Event,IOA,ASDU)
VALUES({0},{1},{2},{3},{4})",
date, event_object, "bla bla", ioa, ASDU);
数据库中的日期列类型是datetime2(7)
(0x80131904):'10'附近的语法错误
插入的日期:12/07/2016 10:43:22.43
我已经更改了日期,并且总是在接近几小时时显示错误。
执行代码:
if (state == ConnectionState.Closed)
connection.Open();
try
{
ExecuteQueryWithoutResult(connection, updateEvent_list);
SetText2("update_Even_list query executed");
}
catch(Exception ex) { SetText2(ex.ToString()); }
static void ExecuteQueryWithoutResult(SqlConnection connection, string query)
{
using (SqlCommand command = new SqlCommand(query, connection))
{
command.ExecuteNonQuery();
}
}
注意:我试图直接从sql查询插入,它工作正常:
INSERT INTO Events_List (date, Object,Event,IOA,ASDU)
VALUES('2016-07-12 10:26:03.523','B','bla bla',10,10)
答案 0 :(得分:3)
您应该考虑您的计划中的国际化,全球化和本地化。
我建议您尝试以下
DateTime date=DateTime.UtcNow;
string updateEvent_list = "INSERT INTO Events_List (date, Object,Event,IOA,
ASDU) VALUES(@date, @Object,@Event,@IOA,@ASDU)";
SqlCommand command = new SqlCommand(query, db.Connection);
command.Parameters.AddWithValue("@date", date);
//...
有了这个,你的程序就不在乎sql server platform dateformat是否与C#running机器相同。另外,你避免使用sql注入。
答案 1 :(得分:-1)
您忘了在VALUES部分中将''
添加到您的查询中。它应该像吼一样
string.Format("INSERT INTO Events_List (date, Object,Event,IOA,ASDU) VALUES('{0}','{1}','{2}',{3},{4})", date, event_object, "bla bla", ioa, ASDU);