我收到此异常:"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
答案 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
明确指定参数。