2017-07-01 37 views
0

我有一個由3個按鈕(添加,編輯和刪除)控制的一個DataGridView。其中一個按鈕是編輯按鈕。另外兩個按鈕運行良好。它也有2個文本框,任務和優先級爲如果選擇在DataGridView行,則列的值將被傳遞到每個文本框傳遞try語句,但數據庫不會更新C#

我不知道是否有與下面的代碼的任何問題。

在數據庫中的表只有兩列,任務和優先級。

當我點擊編輯按鈕,try語句給了我成功的消息,但作爲datagridview的數據庫將不會更新爲好。

有沒有解決方法?

void EditItemClick(object sender, EventArgs e) 
    { 
     if (taskTb.Text != "" && priorityTb.Text != ""){ 
      koneksi.Open(); 
      MySqlCommand cmd = new MySqlCommand("update todo set [email protected], [email protected] where [email protected]", koneksi); 
      cmd.Parameters.AddWithValue(@"task", taskTb.Text); 
      cmd.Parameters.AddWithValue(@"priority", priorityTb.Text); 
      try{ 
       cmd.ExecuteNonQuery(); 
       MessageBox.Show("Successfully Edited", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); 
      } 
      catch (MySqlException ex){ 
       MessageBox.Show(ex.ToString()); 
      } 
      koneksi.Close(); 
      readData(); 
     } 
     else{ 
      MessageBox.Show("Failed to edit"); 
     } 
    } 
+1

你確定你的查詢是正確的?如果你通過像SQL Workbench這樣的客戶端運行它,它會正常工作嗎?通過正常工作,我的意思是它會得到預期的結果,因爲它看起來不會造成語法錯誤。 – stybl

+0

也許它正在更新,但你沒有看到任何更改,因爲'SET任務= @任務WHERE任務= @任務'?您正在將「Task」中的值更新爲相同的值。 – waka

+0

@stybl是的。我已經在SQL Workbench上嘗試過了。 – billyhalim25

回答

1

問題是在您的查詢。 您無法傳遞任務和優先級,然後通過傳遞任務進行更新。

解決方案:

"update todo set [email protected], [email protected] where [email protected]" 
+1

謝謝@wedo。但是沒有'id'的文本框。儘管我在數據庫中有'id'列,但我應該給'id分配什麼? – billyhalim25

+1

從數據庫表或任何其他唯一的字段檢索[讀取ID](https://www.w3schools.com/sql/sql_autoincrement.asp) – wedo

+1

好@wedo感謝在[關係數據庫設計(HTTPS – billyhalim25