• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB.NETでSqlClientを利用して複数テーベルを見る方法)

VB.NETでSqlClientを利用して複数テーブルを参照する方法

このQ&Aのポイント
  • VB.NETでSQLデータベースからデータを取得するプログラムを作成中です。複数のテーブルを参照する方法がわかりません。教えてください。
  • 現在、VB.NETでSQLデータベースからデータを取得するプログラムを作成しています。複数のテーブルを参照する方法を教えてください。
  • VB.NETでSQLデータベースからデータを取得するプログラムを作成していますが、複数のテーブルを参照する方法が分かりません。どうすればよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.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を毎回行わないようにしても良いだろう。ソースは今ここで打っただけで、テストしていないのでエラーが出たら直してください。

Haule
質問者

お礼

あーーごめんなさい。 ミスでした ☆SQLcmd2.Connection = DBcn  ↓ ☆SQLcmd2.Connection = DBcn2 ここが間違ってました~ ありがとうございましたー^^

Haule
質問者

補足

レスありがとうございます。 やってみたのですが、 ■プログラム変更(☆追加行) 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が閉じているから開けみたいなエラーがでるのですが、開く関数がわかりません。 どうすればよいのでしょうか?

関連するQ&A