C# MySQLAdapter不会更改这些值
我试过了,但MySQL服务器中的值并没有相应地改变C# MySQLAdapter不会更改这些值,c#,mysql,C#,Mysql,我试过了,但MySQL服务器中的值并没有相应地改变 注意:我想更新数据表dt.Rows[0][username],dt.Rows[0][password]中的值,我不想手动指定值 谢谢您的帮助。尝试使用AddWithValue public static int update(DataTable dt, string id, string table){ MySqlDataAdapter adapter = new MySqlDataAdapter(); adapter.Upd
注意:我想更新数据表dt.Rows[0][username],dt.Rows[0][password]中的值,我不想手动指定值 谢谢您的帮助。尝试使用AddWithValue
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);
...
...
}
这行得通吗?我看到您的代码中有一些地方出错了。首先,您需要使用@sign来指定参数 从 请注意,参数前面有一个“@”符号,表示它是 作为参数处理 您没有为参数指定值。您只是声明了它们的参数,但没有向它们添加任何值。将.Value属性分配给它们的值。或者您也可以使用AddWithValue方法作为替代方法。使用AddWithValue方法,您不需要指定它们的类型。我在您的代码中也没有看到任何MySqlConnection。您在MySqlCommand中定义了conn,但没有使用它并在任何地方打开它。在使用方法之前,你需要先使用方法 比如,
adapter.UpdateCommand.Parameters.AddWithValue("@username",dt.Rows[0]["username"].ToString());
我想更新数据表dt.Rows[0][username],dt.Rows[0][password]中的值,然后像我在回答中显示的那样添加数据表值。我必须手动添加它吗?没有其他解决方案可以检查DataTable.Rows[0]中的数据,然后将其指定为参数?如果不是,为什么我需要将“adapter.Update”DataTable作为参数?传递参数是一种很好的做法,因为您可以保护自己不受SQL注入的影响。我想更新数据表dt.Rows[0][username],dt.Rows[0][password]中的值,我不想手动指定值。
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);
}
}