0

から行を削除しても、データベースが更新されませんDataGridView。キーを押してDelete上の選択した行を削除してDataGridViewから、他の行に他の変更を加えたとします。

最後に、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 fileid=@fileid and vdid=@vdid";"
            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
4

1 に答える 1

0

正しい削除コマンドが必要です

DeleteCmd.CommandText = "delete from vesseldata where plantid = @plantid and fileid= @fileid and vdid=@vdid";

コマンド テキストに同じ名前のパラメータを設定します。

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

まだ開いていない場合は、_DatabaseConnection前に開きます。ExecuteQuery

アプリケーションが行に来ない場合、エラーは発生しませんExecuteQuery。デバッグして、アプリケーションがその時点に来ているかどうか、コマンドテキスト、接続状態、およびエラーを確認してください。

于 2012-05-31T07:06:32.570 に答える