如何将C#DateTime转换为MySQL时间戳表列
本文关键字:MySQL 时间戳 转换 C#DateTime | 更新日期: 2023-09-27 18:28:23
我正在尝试用当前时间更新一个名为dtprint的timestamp类型的表元素(原始值为NULL)。我使用的代码如下:
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语法中有一个错误;在第1行的"14:03:23 WHERE idPerson=45"附近,查看与MySQL服务器版本相对应的手册,以获得要使用的正确语法。
我唯一能想到的是,数据库没有将时间识别为时间戳,任何帮助都将不胜感激。
由于dt
是string
,而您的dtprint
是timestamp
,因此在插入时需要使用单引号;
"UPDATE requests SET dtprint = '" + dt + "' WHERE
但不要用这种方式
您应该始终使用参数化查询。这种字符串串联对SQL注入攻击是开放的。
还可以使用using
语句来处理数据库连接和对象。
using(MySqlConnection con = new MySqlConnection(ConnectionString))
using(MySqlCommand _cmd = con.CreateCommand())
{
string dt = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
_cmd.CommandText = @"UPDATE requests SET dtprint = @dtprint
WHERE idPerson = @id";
_cmd.Parameters.Add("@dtprint", MySqlType.TimeStamp).Value = dt;
_cmd.Parameters.Add("@id", MySqlType.Int).Value = _personID[index];
con.Open();
_cmd.ExecuteNonQuery();
}