为什么无法在数据库中插入日期

本文关键字:插入 日期 数据库 为什么 | 更新日期: 2023-09-27 17:56:25

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

值 ('2016-07-12 10:26:03.523', 'B','bla bla' ,10,10)

为什么无法在数据库中插入日期

您应该考虑程序中的国际化、全球化和本地化。

我建议您尝试以下方法

        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 服务器平台日期格式是否与运行 C# 的计算机相同。此外,还可以避免 sql 注入。

您忘记在 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);