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”])中的值,我不想手动指定值。
感谢您的帮助。
答案 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);
}
}