MySQLAdapter不会更改值

时间:2014-03-02 13:47:23

标签: c# mysql

 public static int update(DataTable dt, string id, string table){
    MySqlDataAdapter adapter = new MySqlDataAdapter();
    adapter.UpdateCommand = new MySqlCommand("UPDATE " + table + " SET username=?username,password=?password WHERE id=" + id, conn);
    adapter.UpdateCommand.Parameters.Add("?username",MySqlDbType.VarChar,30);
    adapter.UpdateCommand.Parameters.Add("?password", MySqlDbType.VarChar, 30);
    adapter.Update(dt);
    ...
    ...
 }

我试过了,但MySQL服务器中的值没有相应改变。

注意:我想更新位于DataTable dt(dt.Rows [0] [“username”],dt.Rows [0] [“password”])中的值,我不想手动指定值。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

尝试使用AddWithValue

adapter.UpdateCommand.Parameters.AddWithValue("@username",dt.Rows[0]["username"].ToString());

这不会起作用吗?

答案 1 :(得分:0)

我在代码中看到了一些错误。首先,您需要使用@符号来指定参数。

来自5.1.4 Working with Parameters

  

请注意,参数前面有一个“@”符号表示它是   被视为参数。

您没有为参数指定值。您刚刚声明了他们的参数,但您没有为它们添加任何值。确定您的.Value财产的价值。或者您可以使用AddWithValue方法作为替代方法。使用AddWithValue方法,您无需指定其类型。我的代码中也没有看到任何MySqlConnection。您在conn中定义了MySqlCommand,但您没有使用它并在任何地方打开它。在使用.Fill方法之前,您需要使用.Update方法。

例如;

 public static int update(DataTable dt, string id, string table)
 {
    using (MySqlConnection conn = new MySqlConnection(connectionString))
    {
       MySqlDataAdapter adapter = new MySqlDataAdapter();
       adapter.UpdateCommand = new MySqlCommand("UPDATE " + table + " SET username=@username,password=@password WHERE id=" + id, conn);
       adapter.UpdateCommand.Parameters.Add("@username",MySqlDbType.VarChar,30).Value = usernameValue;
       adapter.UpdateCommand.Parameters.Add("@password", MySqlDbType.VarChar, 30).Value = passwordValue;
       conn.Open(); 
       adapter.Fill(dt);
       adapter.Update(dt);
    }
 }