【发布时间】:2014-12-25 14:05:41
【问题描述】:
我正在尝试使用当前时间(原始值为 NULL)更新名为 dtprint 的时间戳类型的表元素。我使用的代码如下:
MySqlConnection con = new MySqlConnection("Connection_String");
con.Open();
MySqlCommand _cmd = con.CreateCommand();
string dt = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
_cmd.CommandText = "UPDATE requests SET dtprint = " + dt + " WHERE idPerson = " + _personID[index];
_cmd.ExecuteNonQuery();
con.Close();
我不断收到的异常是:附加信息:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“14:03:23 WHERE idPerson = 45”附近使用正确的语法。
我唯一能想到的是数据库没有将时间识别为时间戳,非常感谢任何帮助。
【问题讨论】:
-
dtprint和idPerson列的类型是什么?而且您应该始终使用参数化查询。这种字符串连接对 SQL 注入攻击是开放的。如果您的dtprint是timestamp,则应将其添加为DateTime,而不是string。 -
dtprint 是 timestamp 类型,idPerson 是 int 类型
-
在日期字符串周围加上单引号。
'" + dt + "' -
您是否有权将 UPDATE 命令转换为存储过程..?如果是这样的话..我也建议转换 UPDATE 语句以利用参数化查询并将
_cmd.ExecuteNonQuery();包装在 try{}catch(SqlException sqlEx{show the sqlEx.Message here} 以便您可以捕获 SQLException跨度>
标签: c# mysql datetime timestamp