0

db テーブルをデータグリッドにリンクするための私の sqlite コードは次のとおりです。

 sqlitecon.Open();
 string Query2 = "Select * from Security_details "; 
 SQLiteCommand createCommand2 = new SQLiteCommand(Query2, sqlitecon);  createCommand2.ExecuteNonQuery();
 SQLiteDataAdapter dataAdp2 = new SQLiteDataAdapter(createCommand2);
 DataTable dt2 = new DataTable("Security_details");
 dataAdp.Fill(dt2);
 datagrid_security.ItemsSource = dt2.DefaultView;
 dataAdp2.Update(dt2); 
 sqlitecon.Close();

このコードは、フォーム ロード イベント中にデータベース テーブルをデータグリッドにリンクします。

ユーザーができるようにしたい:

  • データグリッドに新しい行を追加して、db に挿入します
  • データグリッドの既存の行を編集すると、db に更新されます。

ここで、次のクエリは私のデータベースフィールドです

SQLiteCommand comm = new SQLiteCommand("update Security_details  " + 
      "set id=@id,Code=@Code,Description=@Description,Rate=@Rate," + 
      "Qty=@Qty,Amount=@Amount,Remarks=@Remarks where id=@id", sqlitecon);

データグリッドを介して db テーブルを挿入および編集するための一連のコマンドを教えてください。

4

1 に答える 1

3

の宣言をSQLiteDataAdapterグローバル クラス レベルに移動し、SQLiteCommandBuilderそこでも宣言します。次に、データをグリッドにバインドする前に、テーブルに適した UPDATE/INSERT/DELETE コマンドを自動的に作成する SQLiteCommandBuilder を初期化します (SELECT がテーブルの主キーを返す場合)。

この時点で、データをデータベースに送信する準備ができたらUpdate、グローバル SQLiteDataAdapter インスタンスのメソッドを呼び出します

public class YourClass
{
     SQLiteDataAdapter dataAdp2;
     SQLiteCommandBuilder cmdBuilder;
     .....


     public void BindMyGrid()
     {
          sqlitecon.Open();
          string Query2 = "Select * from Security_details "; 
          SQLiteCommand createCommand2 = new SQLiteCommand(Query2, sqlitecon);                

          dataAdp2 = new SQLiteDataAdapter(createCommand2);
          cmdBuilder = new SQLiteCommandBuilder(dataAdp2);
          DataTable dt2 = new DataTable("Security_details");
          dataAdp2.Fill(dt2);
          datagrid_security.ItemsSource = dt2.DefaultView;
          sqlitecon.Close();
     }
     ....
     public void SubmitData()
     {
          dataAdp2.Update((datagrid_security.ItemsSource As DataView).Table);
     }
     ......
}

このプロセスの詳細な議論が必要な場合は、この MSDN の記事を読むことができます。これはかなり古いもので、SQL Server に関しては VB.NET にありますが、基本的な概念は同じです。

于 2013-10-13T16:37:12.220 に答える