2017-08-23 27 views
0

私はデータベースを持っていると私は行を削除した後、私は、データベースを更新することはできません、私はエラーを取得しています:どのようにしてdatagridviewからデータベースに保存できますか?

An unhandled exception of type 'System.InvalidOperationException' occurred in System.Data.dll update requires a valid updatecommand when passed datarow collection with deleted rows

...ラインを示す:ここではsqliteDataAdapter.Update(dataTable); は私のコードです:

private void SaveChanges(bool keepControlsDisabled) 
{ 
    disableControls(); 

    Validate(); 
    programs_dgv.CommitEdit(DataGridViewDataErrorContexts.Commit); 
    programs_dgv.EndEdit(); 

    programs_dgv.DataSource = null; 
    programs_dgv.DataSource = bindingSource; 
    programs_dgv.Update(); 

    sqliteDataAdapter = new SQLiteDataAdapter(); 
    sqliteDataAdapter.Update(dataTable); 
    dataTable.AcceptChanges(); 

    if (keepControlsDisabled == false) 
    { 
     enableControls(); 
    } 
} 

ここです削除コード:

private void contextMenuStrip_tsmi_Click(object sender, EventArgs e) 
{ 
    Int32 rowToDelete = programs_dgv.Rows.GetFirstRow(DataGridViewElementStates.Selected); 
    programs_dgv.Rows.RemoveAt(programs_dgv.CurrentCell.RowIndex); 
    programs_dgv.ClearSelection(); 
} 

私はSaving changes from a DataGridView back to an SQL database?で質問を読んだが、それは助けにはなりませんでした。

  • DataGridviewからデータベースにレコードを渡す汎用保存機能はありますか?

  • 正しいですか?私はデータベースを扱い、結果をdatagridviewに表示する必要がありますか?または、最初にdatagridviewを処理する必要がありますか?私はとても混乱しています。パフォーマンスのためにどちらが正しいですか?

+0

に役立ちます。 (SqlDataSource.UpdateCommand)を実行する有効な更新ステートメントがいったんこのエラーを受け取るべきではない、デザイナービューでこれを設定できる必要があります。 – user685590

答えて

0

はあなたがdeletecommand

を使用しました、私はそれがSQLプログラムのより多くのだと思うと、あなたは簡単にデバッグから把握することができます。

またはこれを見るには、データソースの更新コマンドが設定されていないようですねhttps://stackoverflow.com/a/18578486/1481690

+0

https://gist.github.com/nikel/a1ef459a16c1275b48a937414673b135私はこれを試しましたが、今回は何も削除しません。 – onurcano01

関連する問題