2012-05-31 63 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行,您将不会收到任何错误,请调试并检查您的应用程序是否已到达该位置,命令文本,连接状态和错误是什么。