无法使用c#手动更新包含文本字段的mysql数据库

时间:2013-06-28 09:29:03

标签: c# mysql

我正在努力解决使用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替换字符串值) 有人可以帮忙吗?谢谢!

1 个答案:

答案 0 :(得分: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();
}

注意我为了便于阅读而简化了参数语法,而不是暗示你的代码是错误的