Vb.net 类型为';的未处理异常;系统无效操作异常';发生在System.Data.dll中

Vb.net 类型为';的未处理异常;系统无效操作异常';发生在System.Data.dll中,vb.net,Vb.net,我正在visual studio 2008的“sql server 2008管理版”中创建与数据库的连接 我在数据库中存储了一个名为“CTable”的过程,我想执行它 这是我的代码: Dim strConn As String strConn = "Server=(local);Database=dbAjout;Integrated Security=True" Dim MyConn As New SqlConnection(strConn) MyConn.Op

我正在visual studio 2008的“sql server 2008管理版”中创建与数据库的连接

我在数据库中存储了一个名为“CTable”的过程,我想执行它

这是我的代码:

    Dim strConn As String
    strConn = "Server=(local);Database=dbAjout;Integrated Security=True"

    Dim MyConn As New SqlConnection(strConn)
    MyConn.Open()
    Dim cmd As SqlCommand

    Dim query As String = "EXEC CTable"

    cmd = New SqlCommand(query, MyConn)

    MyConn.Open()
    cmd.ExecuteNonQuery()
    MyConn.Close()
End Sub
但是我有一个错误:
System.Data.dll中发生了类型为“System.InvalidOperationException”的未处理异常

其他信息:连接未关闭。连接的当前状态为打开。“

你有什么建议???
im被阻止,已经4个小时了!!!!

您打开连接两次。根据文档():

例外情况
无效操作异常
-如果不指定数据源或服务器,则无法打开连接。
-或
-连接已打开。


这(可能)就是引发InvalidOperationException的原因。

将代码更改为:

Dim strConn As String
strConn = "Server=(local);Database=dbAjout;Integrated Security=True"

Dim MyConn As New SqlConnection(strConn)
Dim cmd As SqlCommand

Dim query As String = "EXEC CTable"

cmd = New SqlCommand(query, MyConn)

MyConn.Open()
cmd.ExecuteNonQuery()
MyConn.Close()
<>您应该考虑使用< <代码> > <代码> >语句,使用< < /P> >语句调用<代码>处理< /代码>模式> < /p>
Dim strConn As String
strConn = "Server=(local);Database=dbAjout;Integrated Security=True"

Using MyConn As New SqlConnection(strConn)
    Dim cmd As SqlCommand
    Dim query As String = "EXEC CTable"

    cmd = New SqlCommand(query, MyConn)

    MyConn.Open()
    cmd.ExecuteNonQuery()
End Using

注意:
Using
语句可以应用于实现
IDisposable
接口的任何对象。在这种情况下,它将通过调用
close
方法自动关闭
SqlConnection
对象。在后台,VB.NET编译器将看到
Using
语句并包装
块中使用
块,尝试
块并给它一个
最后
块,这是代表您调用
SqlConnection
Close
方法的地方。在我看来,这种语法使代码更易于阅读,更易于维护,因为您可以看到connection对象中包含的所有内容t并删除“记住”关闭基础数据库连接的需要。

@user2550171您在
MyConn
上调用
Open
方法两次,导致此异常。因为您已经打开了连接。您可以删除其中任何一个以修复此问题。