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,必须首先将它关闭。"
请问怎么解决?
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,必须首先将它关闭。"
请问怎么解决?
objreader = objcmd.ExecuteReaderobjcmd.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