错误“已经有与此命令关联的打开的DataReader,必须先关闭它。”

Pra*_*lli 1 vb.net sql-server-2008

我使用下面的代码,但它在句子icount = cmd.ExecuteNonQuery上给出了错误

cn.Open()
str = "SELECT [srno],[caste]FROM [SchoolERP].[dbo].[caste] where (caste ='" + (TextBox1.Text) + "')"
cmd = New SqlCommand(str, cn)
dr1 = cmd.ExecuteReader()

If Not dr1.HasRows Then
    str = "INSERT INTO [SchoolERP].[dbo].[caste]([caste])VALUES('" + TextBox1.Text + "')"
    cmd = New SqlCommand(str, cn)
    icount = cmd.ExecuteNonQuery
    MessageBox.Show(icount)

Else
    MsgBox("Record Exists")
    cn.Dispose()
End If
cn.Close()
Run Code Online (Sandbox Code Playgroud)

Dis*_*sha 5

使用完DataReader对象后,请尝试始终调用Close方法。

  dr1.Close();
Run Code Online (Sandbox Code Playgroud)

另一个选择是打开MARS,在您的连接字符串中只需添加"MultipleActiveResultSets=True;"