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

时间:2014-10-29 18:06:11

标签: c# mysql datetime timestamp

我尝试使用当前时间更新名为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语法有错误;检查与您的MySQL服务器版本对应的手册,以便在#14; 03:23 WHERE idPerson = 45'附近使用正确的语法。在第1行。

我唯一能想到的是数据库并没有将时间识别为时间戳,非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

由于dtstring且您的dtprinttimestamp,因此在尝试插入时需要使用单引号。等;

"UPDATE requests SET dtprint = '" + dt + "' WHERE

但不要这样使用。

您应始终使用parameterized queries。这种字符串连接对SQL Injection攻击开放。

还可以使用using statement来处置数据库连接和对象。

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