更新日期类型日期

Update datetype date

我收到此异常:"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";

请注意,不同之处在于列和变量上的引号。我哪里错了?

Ps。 Email 列的类型为 VarChar

你不能像那样在命令中使用变量。你的语法错误。

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

_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

Note

The parameter is preceded by an '@' symbol to indicate it is to be treated as a parameter.

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

所以你的查询文本应该是"UPDATE Regs SET LastLogin = @today WHERE Email = @userEmail"

此外,如果您在查询文本中使用参数 - 您必须使用 _command.Parameters.Add.

明确指定它们