-1

このメソッドを使用して、logins 列の値を 1 つ増やします。

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

そして、私はこの例外を受け取ります:

コマンド実行中に致命的なエラーが発生しました。

4

3 に答える 3

1

このコードを試してみてください

string commmandLine = "UPDATE Users SET logins = logins + 1 WHERE id = @id";
cmd.Set
于 2013-04-01T18:20:38.453 に答える
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**
于 2013-04-01T18:16:04.250 に答える
-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またはへの finally ブロック呼び出しを使用しますDispose)。そうすれば、あなたのコードは素晴らしく明確になります:)

于 2013-04-01T18:02:28.390 に答える