SQL嵌套查询的问题
sqlstr = "select * from MainMenu order by maxm"
Dim conn As SqlConnection = New SqlConnection(ConfigurationSettings.AppSettings("connstr"))
Dim objcmd As SqlCommand = New SqlCommand(sqlstr, conn)
Dim objreader As SqlDataReader
Try
objcmd.Connection.Open()
objreader = objcmd.ExecuteReader
Do While objreader.Read
id = objreader.GetInt32(0).ToString
mname = objreader.GetSqlString(1).ToString
'用id,mname
sqlstr1 = "select * from FromMenu where upid='" & id & "' order by id"
Dim objcmd1 As SqlCommand = New SqlCommand(sqlstr1, conn)
Dim objreader1 As SqlDataReader
' objcmd1.Connection.Open()
objreader1 = objcmd1.ExecuteReader
Do While objreader1.Read
id1 = objreader1.GetSqlString(0).ToString
mname1 = objreader1.GetSqlString(1).ToString
'用id1,mname1
Loop
Loop
代码如上,运行后提示"已有打开的与此连接相关联的 DataReader,必须首先将它关闭。"
请问怎么解决?
问题点数:20、回复次数:3Top
1 楼wangrenda(浪人)回复于 2004-09-04 16:48:17 得分 5
改datasetTop
2 楼triout(笨牛)回复于 2004-09-04 16:52:47 得分 15
代码:
objreader = objcmd.ExecuteReader
objcmd.Connection连接对象打开了一个DataReader,所以:
objreader1 = objcmd1.ExecuteReader
再次打开的时候会报告错误。
打开一个DATAREADER,用完后必须关闭,否则出错误。而且,如果有DATAREADER打开,也不能关闭CONNECTION。
你的代码修改为:
sqlstr = "select * from MainMenu order by maxm"
Dim conn As SqlConnection = New SqlConnection(ConfigurationSettings.AppSettings("connstr"))
Dim objcmd As SqlCommand = New SqlCommand(sqlstr, conn)
Dim objreader As SqlDataReader
Try
objcmd.Connection.Open()
objreader = objcmd.ExecuteReader
Do While objreader.Read
id = objreader.GetInt32(0).ToString
mname = objreader.GetSqlString(1).ToString
'用id,mname
sqlstr1 = "select * from FromMenu where upid='" & id & "' order by id"
Dim objcmd1 As SqlCommand = New SqlCommand(sqlstr1, conn)
Dim objreader1 As SqlDataReader
' objcmd1.Connection.Open()
objreader1 = objcmd1.ExecuteReader
Do While objreader1.Read
id1 = objreader1.GetSqlString(0).ToString
mname1 = objreader1.GetSqlString(1).ToString
'用id1,mname1
Loop
objreader1.Close
Loop
objreader.Close
Top
3 楼bccu(风雨中人)回复于 2004-09-04 16:58:18 得分 0
datasetTop




