为什么无法在数据库中插入日期
本文关键字:插入 日期 数据库 为什么 | 更新日期: 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);