- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB.NETでSqlClientを利用して複数テーベルを見る方法)
VB.NETでSqlClientを利用して複数テーブルを参照する方法
このQ&Aのポイント
- VB.NETでSQLデータベースからデータを取得するプログラムを作成中です。複数のテーブルを参照する方法がわかりません。教えてください。
- 現在、VB.NETでSQLデータベースからデータを取得するプログラムを作成しています。複数のテーブルを参照する方法を教えてください。
- VB.NETでSQLデータベースからデータを取得するプログラムを作成していますが、複数のテーブルを参照する方法が分かりません。どうすればよいでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
できれば「何を試したか」をざっとで良いのであげて欲しかった。でないと、「方法1はここが違うよ」などと指摘できない。想像するに、SqlConnection、SqlCommand、SqlDataReaderの各インスタンスを使いまわそうとしていたのではと思う。 .NetのSqlClientプロバイダはコネクションプーリングをサポートしているので、安心してもう一個ずつ各インスタンスを作成しよう。 While dr.Read() = True Dim DBcn2 As New SqlClient.SqlConnection Dim SQLcmd2 As New SqlClient.SqlCommand DBcn2.ConnectionString = "接続情報省略" DBcn2.Open() SQLcmd2.Connection = DBcn SQLcmd.CommandText = "select * from BBB " dim dr2 As SqlClient.SqlDataReader = SQLcmd2.ExecuteReader() ほげほげ dr2.Close() DBcn2.Close() DBcn2.Dispose() End While Whileの外で宣言してOpenとCloseを毎回行わないようにしても良いだろう。ソースは今ここで打っただけで、テストしていないのでエラーが出たら直してください。
お礼
あーーごめんなさい。 ミスでした ☆SQLcmd2.Connection = DBcn ↓ ☆SQLcmd2.Connection = DBcn2 ここが間違ってました~ ありがとうございましたー^^
補足
レスありがとうございます。 やってみたのですが、 ■プログラム変更(☆追加行) Public DBcn As SqlClient.SqlConnection = Nothing Public SQLcmd As SqlClient.SqlCommand Dim dr As SqlDataReader ☆Public DBcn2 As SqlClient.SqlConnection = Nothing ☆Public SQLcmd2 As SqlClient.SqlCommand ☆Dim dr2 As SqlDataReader DBcn = New SqlClient.SqlConnection SQLcmd = New SqlClient.SqlCommand DBcn.ConnectionString = "接続情報省略" DBcn.Open() SQLcmd.Connection = DBcn ☆DBcn2 = New SqlClient.SqlConnection ☆SQLcmd2 = New SqlClient.SqlCommand ☆DBcn2.ConnectionString = "接続情報省略" ☆DBcn2.Open() ☆SQLcmd2.Connection = DBcn SQLcmd.CommandText = "select * from AAA " dr = SQLcmd.ExecuteReader() While dr.Read() = True ←(2) ☆SQLcmd2.CommandText = "select * from BBB " ☆dr2 = SQLcmd2.ExecuteReader()←(1)エラー ☆While dr2.Read() = True ※処理A ☆End While End While dr.Close() DBcn.Close() DBcn.Dispose() ☆dr2.Close() ☆DBcn2.Close() ☆DBcn2.Dispose() (1)のところで、 『'System.InvalidOperationException' のハンドルされていない例外が system.data.dll で発生しました。 追加情報 : この接続に関連付けられている DataReader が既に開いています。この DataReader を最初に閉じる必要があります。』 というエラーが発生します。 そこで(1)の前に dr2.close()をいれればなんとかとおるのですが、 (2)のところで、DataReaderが閉じているから開けみたいなエラーがでるのですが、開く関数がわかりません。 どうすればよいのでしょうか?