如果“连接未关闭”错误,请关闭连接?

时间:2014-03-12 04:18:09

标签: vb.net

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

Connection not closed. Connection's current state is open 这是我的代码。请帮我纠正错误:

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

3 个答案:

答案 0 :(得分:0)

using语句中包装sqlcommand。请勿关闭或手动处理。

答案 1 :(得分:0)

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

If con.State <> ConnectionState.Open Then
    con.Open()
End If

这将帮助您避免当前的异常。

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

可能的解决方案是不共享您的连接对象,每次需要时实例化新连接并将其包装在using语句中,如@DeveloperGuo指出的那样。

答案 2 :(得分:0)

您之前的代码中可能存在打开的连接,您无法将其关闭。

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

If connection.State <> 1
connection.Open()
End IF