C# MySQLAdapter不会更改这些值

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

我试过了,但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.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);
    }
 }