为什么日期不能插入数据库中

时间:2016-07-12 09:47:17

标签: c# sql-server database

我有将数据插入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)

2 个答案:

答案 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);