C# can';t使用c手动更新包含文本字段的mysql数据库#

C# can';t使用c手动更新包含文本字段的mysql数据库#,c#,mysql,C#,Mysql,我正在努力解决使用Windows窗体应用程序更新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", MySq

我正在努力解决使用Windows窗体应用程序更新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
)。

有人能帮忙吗?谢谢

似乎您正在尝试使用表对象中的更改更新后端数据库。对于DataAdapter的更新方法,以及当表绑定到某个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();
}

注意:为了可读性,我简化了参数语法,这并不意味着代码是错误的

可以粘贴错误吗?请添加try、cath和paste异常以获取更多详细信息。您确定表中存在更改吗?(即,作为测试调用table.GetChanges会返回什么?)如果您更新DataGridView(启用编辑),那么您的基础datatable(我假设您已将其绑定到DataGridView)将接收用户所做的更改,并调用update方法(无需指定参数)但是如果您只想更改一个文本框,那么就调用上面的代码,不需要涉及viewonly datagridview及其数据源