更新日期类型日期

时间:2015-04-06 12:03:31

标签: c# mysql sql-update

我收到此异常:"Fatal error encountered during command execution."

我目前的代码如下:

internal void UpdateLastLogin(string userEmail)
    {
        DateTime today = DateTime.Now;           

        using (_msqlCon = new MySqlConnection(_connectionString))
        {
            _msqlCon.Open();

            _query = "UPDATE Regs SET `LastLogin` = ?today WHERE Email = ?userEmail";
            _command = new MySqlCommand(_query, _msqlCon);               

            _command.ExecuteNonQuery();
        }
    }

列:LastLogin的数据类型为date 我在搜索更多信息之前首先尝试的是:

_query = "UPDATE Regs SET LastLogin = ?today WHERE Email = ?userEmail";

我也尝试过:

_query = "UPDATE Regs SET `LastLogin` = `?today` WHERE Email = ?userEmail";

请注意,差异是列和变量上的引号。我哪里错了?

聚苯乙烯。列Email的类型为VarChar

2 个答案:

答案 0 :(得分:1)

您不能在命令中使用变量。你的语法错了。

将它们定义为命令中的参数,并将命令与参数名称和值相加。

_query = "UPDATE Regs SET `LastLogin` = @today WHERE Email = @mail";
_command = new MySqlCommand(_query, _msqlCon);
_command.Parameters.AddWithValue("@today", today);
_command.Parameters.AddWithValue("@mail", userEmail);

来自:5.1.4 Working with Parameters

  

请注意

     

参数前面有一个' @'符号表示它是   作为参数处理。

答案 1 :(得分:0)

标准MySqlCommand参数应以@符号开头,而不是?

因此,您的查询文字应为"UPDATE Regs SET LastLogin = @today WHERE Email = @userEmail"

此外,如果您在查询文字中使用参数,则必须使用_command.Parameters.Add明确指定参数。