DOBON.NET DOBON.NETプログラミング掲示板過去ログ

このコマンドに関連付けられている DataReader が既に開かれています。

分類:[.NET]

ADO.NETでSQL*Serverに接続にいっています。

メインファイルをReadしながら別ファイルを参照しにいっているのですが
参照ファイルのExecuteReader実行時で表題のエラーになります。
原因がわからなくて・・・
よろしくお願いします。

dim cnn As SqlConnection
dim cmd As SqlCommand
dim cmd2 As SqlCommand
dim rs As SqlDataReader
dim rs2 As SqlDataReader

cnn = New SqlConnection("Integrated Security=false;data source=(local);Initial Catalog=labeler")
cnn.Open()

str_sql = "SELECT * from ProductM"
cmd = New SqlCommand(str_sql, cnn)
rs = cmd.ExecuteReader()
cmd.Dispose()

If rs.HasRows = False Then Exit Sub

Do While rs.Read
cmd2 = New SqlCommand("select * from ProductCatM where ProductCatID=" & rs.Item("ProductCatID"), cnn)
rs2 = cmd2.ExecuteReader
cmd2.Dispose()

MsgBox(rs.Item("ProductCode") & ":" & rs.Item("ProductName") & ":" & rs2.Item("ProductCatName"))
rs2.Close()
Loop

rs.Close()
cnn.Close()
DataReaderはひとつの接続に対して1つしか開くことができません。
■No19858に返信(はいこーんさんの記事)
> DataReaderはひとつの接続に対して1つしか開くことができません。

ADO.NET2.0なら複数のDataReaderを同時にOpenできます。
接続文字列に「MultipleActiveResultSets=true」を追加して下さい。
詳しくは「MARS」でぐぐって下さい。
ありがとうございます。
なんとかなりそうです。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板