【问题标题】:Mysql C# update int value by 1Mysql C#将int值更新1
【发布时间】:2013-04-01 17:48:20
【问题描述】:

我使用这种方法将登录列的值增加一:

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

我得到了这个例外:

在命令执行过程中遇到致命错误。

【问题讨论】:

  • @cur_value 呢?你没有为它设置参数。
  • 你没有提供@cur_value的值,也许是这样?

标签: c# mysql .net


【解决方案1】:

试试这段代码

string commmandLine = "UPDATE Users SET logins = logins + 1 WHERE id = @id";
cmd.Set

【讨论】:

    【解决方案2】:

    先试试这段代码

    commandLine = "更新用户设置 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**
    

    【讨论】:

      【解决方案3】:

      添加以下行:

       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 和finally 块调用方法CloseDispose)。然后你的代码会很好很清晰:)

      【讨论】:

        猜你喜欢
        • 2016-07-08
        • 2013-04-14
        • 1970-01-01
        • 2018-01-13
        • 1970-01-01
        • 2013-05-10
        • 2014-05-16
        • 2011-09-02
        • 1970-01-01
        相关资源
        最近更新 更多