0

Windows Forms アプリを使用して MySQL データベースを更新する際の問題に苦しんでいます。コードは次のようになります。

global_data.MyDA.UpdateCommand = new MySqlCommand("UPDATE words SET word = @word WHERE id = @id", global_data.connection);
global_data.MyDA.UpdateCommand.Parameters.Add(
    new MySqlParameter("@word", MySqlDbType.Text, 0x7FFF, ParameterDirection.Input, false,
    0, 0, "word", DataRowVersion.Proposed, (object)edtWord.Text));
global_data.MyDA.UpdateCommand.Parameters.Add(
    new MySqlParameter("@id", MySqlDbType.UInt32, 10, ParameterDirection.Input, false,
    0, 0, "id", DataRowVersion.Proposed, (object)current_id)); 
global_data.MyDA.Update(table);

ただし、何も更新できません (この場合、文字列値を に置き換えますedtWord.Text)。
誰でも助けてもらえますか?ありがとう!

4

1 に答える 1

0

テーブル オブジェクトの変更でバックエンド データベースを更新しようとしているようです。これは、DataAdapter の Update メソッドの場合、および基になるデータソースを変更する UI コントロール (DataGridView など) にテーブルがバインドされている場合に問題ありません。

しかし、単純なバインドされていないテキスト ボックスがあり、データベース内のレコードを更新したい場合、正しいアプローチはコマンドを定義して実行することです。

string cmdText = "UPDATE words SET word = @word WHERE id = @id";
using(MySqlConnection cn = new MySqlConnection(constring))
using(MySqlCommand cmd = new MySqlCommand(cmdText, cn))
{
    cn.Open();
    cmd.Parameters.AddWithValue("@word", edtWord.Text);
    cmd.Parameters.AddWithValue("@id", current_id);
    cmd.ExecuteNonQuery();
}

コードが間違っていることを意味するのではなく、読みやすくするためにパラメーター構文を単純化したことに注意してください

于 2013-06-28T09:56:45.487 に答える