我使用此方法将登录列的值增加一个:
MySqlConnection connect = new MySqlConnection(connectionStringMySql);
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = connect;
cmd.Connection.Open();
string commandLine = null;
commandLine = "UPDATE Users SET logins = (@cur_value := logins) + 1 WHERE id = @id;";
cmd.CommandText = commandLine;
cmd.Parameters.AddWithValue("@id", userId);
cmd.ExecuteNonQuery();
cmd.Connection.Close();
我得到了这个例外:
命令执行期间遇到致命错误。
答案 0 :(得分:1)
试试这段代码
string commmandLine = "UPDATE Users SET logins = logins + 1 WHERE id = @id";
cmd.Set
答案 1 :(得分:0)
首先尝试此代码
commandLine =“UPDATE Users SET logins = 1 WHERE id = @id”;
如果上面的代码没有引起任何错误,请尝试下面的代码
commandLine = "UPDATE Users SET **logins =@YourValue** WHERE id = @id";
cmd.CommandText = commandLine;
cmd.Parameters.AddWithValue("@id", userId);
cmd.Parameters.AddWithValue("@YourValue", 1);//**Put your logins value**
答案 2 :(得分:-1)
添加以下行:
cmd.Parameters.AddWithValue("@cur_value", yourValue);
还要更清楚sql语句:
UPDATE Users
SET logins = @cur_value + 1
WHERE id = @id;
最好用try/catch
括起有问题的代码片段。表示Stream或SqlConnection等非托管资源的类正在实现IDisposable
接口。它们通常需要用using
语句括起来,以便能够正确地释放它们的资源,即使抛出了异常(或者使用try / finally并且最后块方法调用方法Close
或{{1} })。那么你的代码将很好而且清晰:)