如何将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服务器版本相对应的手册,以获得要使用的正确语法。

我唯一能想到的是,数据库没有将时间识别为时间戳,任何帮助都将不胜感激。

如何将C#DateTime转换为MySQL时间戳表列

由于dtstring,而您的dtprinttimestamp,因此在插入时需要使用单引号;

"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();      
}