2012-05-31 37 views
0

當我從我的DataGridView中刪除一行時,我的數據庫沒有更新。 假設我按Delete鍵刪除DataGridView上的選定行,然後對其他行進行其他更改。保存更改爲db

最後,我會按Save按鈕保存所有這些變化

這裏是我的代碼:

private bool SaveData(DataGridView dgv) 
     { 
      bool bDone = true; 
      DataTable dtVesselDataChanges; 
      SQLiteCommand DeleteCmd = new SQLiteCommand(); 
      string sdeleteVesselCase = " public string SQL_DeleteVesselDataCase = "delete from vesseldata where plantid = @plantid and [email protected] and [email protected]";" 
      DeleteCmd.CommandText = sdeleteVesselCase; 
dtVesselDataChanges = gdt.GetChanges(); 

      if (dtVesselDataChanges.Rows.Count > 0 && dtVesselDataChanges != null) 
      { 
       for (int i = 0; i < dtVesselDataChanges.Rows.Count; i++) 
       { 
        if (dtVesselDataChanges.Rows[i].RowState == DataRowState.Deleted) 
        { 
         int rowindexPlant = Convert.ToInt32(gdt.Rows[i]["PlantId", DataRowVersion.Original]); 
         int rowindexFile = Convert.ToInt32(gdt.Rows[i]["FileId", DataRowVersion.Original]); 
         int rowindexVDID = Convert.ToInt32(gdt.Rows[i]["VDID", DataRowVersion.Original]); 
         DeleteCmd.Parameters.AddWithValue("@plantid", rowindexPlant); 
         DeleteCmd.Parameters.AddWithValue("@fileid", rowindexFile); 
         DeleteCmd.Parameters.AddWithValue("@VDID", rowindexVDID); 
         _DatabaseConnection.ExecuteQuery(DeleteCmd); ; 

        } 
       } 
      } 
There is no error except DB is not updated 
+0

甚至調用這個函數嗎?我認爲沒有別的辦法,除了調試,看看它如何與功能。 –

+0

你發佈的代碼甚至沒有編譯。請參閱'string sdeleteVesselCase =「公共字符串SQL_DeleteVesselDataCase = ...'。 –

+0

@ Thorsten Dittmar:對不起,我不認爲你會嘗試編譯代碼。 – user575219

回答

0

你需要有正確的刪除命令

DeleteCmd.CommandText = "delete from vesseldata where plantid = @plantid and fileid= @fileid and [email protected]"; 

具有相同的名稱設定參數在命令文本中。

DeleteCmd.Parameters.AddWithValue("@plantid", rowindexPlant); 
DeleteCmd.Parameters.AddWithValue("@fileid", rowindexFile); 
DeleteCmd.Parameters.AddWithValue("@vdid", rowindexVDID); 

打開_DatabaseConnectionExecuteQuery如果尚未打開之前。

如果您的應用程序未進入ExecuteQuery行,您將不會收到任何錯誤,請調試並檢查您的應用程序是否已到達該位置,命令文本,連接狀態和錯誤是什麼。