タイトル : 抽出クエリを非同期で実行し、 DataSet に入れる方法 投稿日 : 2007/08/01(Wed) 17:41 投稿者 : じゅん
複雑な抽出クエリやレコード数の多い抽出クエリを実行すると "ここ" の adapter.Fill で処理が止まってしまい、画面が真っ白になってしまいます。 adapter.Fill を非同期で実行するにはどのようにすれば良いですか? それが無理であれば、代わりとなる方法を教えていただけませんでしょうか? (ただし、抽出クエリを実行して、 DataSet に格納したい。) 環境 Visual Basic 2005 '=========== 以下、サンプルコード ============================================= Dim ds As New System.Data.DataSet ' データベースに接続 Dim connection As New System.Data.Odbc.OdbcConnection("Driver={xxx};na=xxx;db=xxx;uid=xxx;pwd=xxx;") Dim adapter As New System.Data.Odbc.OdbcDataAdapter("select * from table", connection) ' 抽出クエリの実行 adapter.Fill(ds) '<--- ここ ' レコード数分ループ For Each row As System.Data.DataRow In ds.Tables(0).Rows ' カラム数分ループ For col As Integer = 0 To ds.Tables(0).Columns.Count - 1 ' Null を空の文字列に置き換える(下の Join でエラーが出ないようにする為) row(col) = row(col).ToString Next ' 1レコードのデータをカンマ区切りで連結したものをイミディエイトウィンドウに出力 Debug.Print(Join(row.ItemArray, ",")) Next ' データベースから切断 connection.Close() '=========== 以上、サンプルコード ============================================= |