tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 抽出クエリを非同期で実行し、 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()

'=========== 以上、サンプルコード =============================================

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。