Mysql C#update int value by 1

时间:2013-04-01 17:48:21

标签: c# mysql .net

我使用此方法将登录列的值增加一个:

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

我得到了这个例外:

  

命令执行期间遇到致命错误。

3 个答案:

答案 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} })。那么你的代码将很好而且清晰:)