簡體   English   中英

MySQLAdapter不會更改值

[英]MySQLAdapter does not change the values

 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] [“用戶名”],dt.Rows [0] [“密碼”]),我不想手動指定值。

謝謝你的幫助。

嘗試使用AddWithValue

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

這行不行嗎?

我發現您的代碼中有些錯誤。 首先,您需要使用@符號來指定您的參數。

5.1.4 Working with Parameters

請注意,該參數前面帶有“ @”符號,以表示它將被視為參數。

而且您沒有為參數指定值。 您只是聲明了它們的參數,但沒有向它們添加任何值。 評估您的.Value屬性的值。 或者,您可以使用AddWithValue方法作為替代方法。 使用AddWithValue方法,您無需指定其類型。 我在您的代碼中也看不到任何MySqlConnection。 您在MySqlCommand定義了conn ,但沒有使用它並在任何地方打開它。 而且,在使用.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);
    }
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM