2016-07-16 7 views
0

DataGridViewにSQLiteデータベースのデータを取り込む方法SQLiteDataAdapterを使用して簡単にテーブルを作成し、DataGridViewのDataSourceにテーブルを作成する方法は次のとおりです。SQLiteDataAdapterとSQLiteDataReaderを使用したDataGridViewの作成の相違点

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles cdmDataTable.Click 

    Dim conn = New SQLiteConnection("Data Source=MyDataBase.sqlite;Version=3") 

    Try 
     Using (conn) 
      conn.Open() 

      Dim sql = "SELECT * FROM users" 
      Dim cmdDataGrid As SQLiteCommand = New SQLiteCommand(sql, conn) 

      Dim da As New SQLiteDataAdapter 
      da.SelectCommand = cmdDataGrid 
      Dim dt As New DataTable 
      da.Fill(dt) 
      DataGridView1.DataSource = dt 

      Dim readerDataGrid As SQLiteDataReader = cmdDataGrid.ExecuteReader() 

     End Using 

    Catch ex As Exception 
     MsgBox(ex.ToString()) 
    End Try 

SQLiteDataAdapterの代わりにSQLiteDataReaderを使用する利点はありますか?

+0

アダプタを使用する方が簡単ですが、SQLiteDataAdapterは内部的にSQLiteDataReaderを使用してテーブルを埋めます。リーダを使ってグリッドを塗りつぶすと、ループが1つ少なくなります。あなたはperfomanceの問題を持っていない場合は、アダプタを貼ってください。 (または、ORMを使用してユーザーオブジェクトのリストを使用してください) – Steve

+0

@ Steve実際、単純なSQL SELECTとwhere句なしで、DAはDataReaderより高速です。奇妙に見えますが、その差はかなり小さいですが、一貫しています(150k行では約5秒です)。 <5k行で測定するのは難しいので、心配しないでください。 – Plutonix

+1

実際、私はDataAdapterまたはDataReaderを直接使用しないで、多くの時間がかかります。 DapperのようなMicro ORMを使うのが本当に好きです。また、検索された行と列の数を減らして適切な索引付けを行うことで、パフォーマンスの最適化を集中させることが最善の方法かもしれません。 – Steve

答えて

1

Data Adapterは、DataTableを基になるデータベースに接続する上位コンポーネントです。それはDataTableを満たすことができ、DataTableの変更をデータベースに同期化することができます。 DataAdapterは内部的にDataReaderを使用して、テーブルからデータを読み取ります。

DataTableを埋めるためにDataAdapter上にDataReaderを使用することは大きな利点はありません。

+0

明確な答えです、ありがとうございます。質問解決済み – fedeteka

関連する問題