Vb.net 如果出现错误,请关闭连接';连接未关闭';?

Vb.net 如果出现错误,请关闭连接';连接未关闭';?,vb.net,Vb.net,我的vb.net应用程序显示错误 连接未关闭。连接的当前状态为打开 这是我的密码。请帮助我更正错误: Private Sub saveBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles saveBtn.Click addSubject() End Sub Private Function addSubject() As Boolean

我的
vb.net
应用程序显示错误

连接未关闭。连接的当前状态为打开
这是我的密码。请帮助我更正错误:

Private Sub saveBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles          saveBtn.Click
        addSubject()
       End Sub

    Private Function addSubject() As Boolean
      Dim cmd As New SqlCommand
      Dim ok As Boolean = False
      cmd.Connection = con
      cmd.CommandText = " INSERT INTO Subjects(subject_name) VALUES(@inn)"
      cmd.CommandType = CommandType.Text
      cmd.Parameters.AddWithValue("inn", subjectTxt.Text)

      Try
        con.Open()
        cmd.ExecuteNonQuery()
        ok = True

      Catch ex As Exception
          MessageBox.Show(ex.Message, "Add failed")
         ok = False
       End Try
      cmd.Dispose()
      con.Close()
      Return ok

      con.Close()
    End Function

在语句中包装sqlcommand。不要手动调用close或dispose。

尝试在打开连接之前检查连接状态,如果连接已经打开,则无需打开:

If con.State <> ConnectionState.Open Then
    con.Open()
End If
如果con.State ConnectionState.打开,则
con.Open()
如果结束
这将帮助您避免当前的异常

无论如何,这个问题的根本原因可能在其他地方。因为,您的代码最后已经尝试关闭连接,所以您的程序似乎还有另一部分没有正确关闭连接


可能的解决方案是不共享您的连接对象,在每次需要时实例化新连接,并使用@DeveloperGuo指出的语句将其环绕。

在您以前的代码中,可能有一个打开的连接无法关闭

此连接状态检查器可以帮助您:

If connection.State <> 1
connection.Open()
End IF
If连接。状态1
connection.Open()
如果结束