我的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
答案 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