如何通过C#控制台应用程序更新MySql表行?

时间:2014-06-28 09:10:20

标签: c# mysql console-application

我正在编写一个控制台应用程序并从MySql表中获取数据。 代码:

 string connection = "Server=localhoht;Database=data;Uid=root;Pwd=root123";
        MySqlConnection dbcon = new MySqlConnection(connection);
        MySqlCommand selectData;
        dbcon.Open();
        selectData = dbcon.CreateCommand();
selectData.CommandText = "SELECT user_id, user_name,user_type FROM win_user WHERE user_type=1 ORDER BY user_id ASC ";
        MySqlDataReader juh = selectData.ExecuteReader();

它的工作正常。现在我想用下面的代码更新一行:

string updatedata = "UPDATE win_user SET user_type='1' WHERE user_id= '1'";
        MySqlDataAdapter MyData = new MySqlDataAdapter();
        MyData.UpdateCommand = new MySqlCommand(updatedata, dbcon);  

但它不起作用。

2 个答案:

答案 0 :(得分:0)

您可以在任何sql客户端工具(例如navicat)中运行命令“UPDATE win_user SET usertype ='1'WHERERE user_id ='1'”,以验证它在您的mysql数据库中是否正确。

答案 1 :(得分:0)

MySqlDataAdapter可用于使用Update方法更新数据库表中的行 Update method(链接用于SqlServer,但概念相同)有很多重载,但基本上它需要一个DataTable,其行以某种方式([RowState != DataRowState.Unchanged][2])进行修改,以便MySqlDataAdapter可以选择行更改并应用适配器中定义的DeleteCommandUpdateCommandInsertCommand

上面的代码没有显示与数据表的任何类型的交互,并且您调用了Update方法,因此无法进行更新。

当然,你可以直接执行你的命令而不需要任何适配器

编辑以更改每个user_type而不是1到1

string updatedata = "UPDATE win_user SET user_type=1 WHERE user_type <> 1";
MySqlCommand cmd = new MySqlCommand(updatedata, dbcon);  
int numOfRowsChanged = cmd.ExecuteNonQuery();