Vb.net ExecuteOnQuery需要打开且可用的连接。连接当前状态为关闭

Vb.net ExecuteOnQuery需要打开且可用的连接。连接当前状态为关闭,vb.net,ms-access,Vb.net,Ms Access,在cm.ExecuteNonQuery之前添加cn.Open(),然后在退出sub之前添加cn.Close Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim response As MsgBoxResult response = MsgBox("Do you want to save the

cm.ExecuteNonQuery
之前添加
cn.Open()
,然后在退出sub之前添加
cn.Close

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim response As MsgBoxResult
        response = MsgBox("Do you want to save the data ?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Confirm")
        If response = MsgBoxResult.Yes Then
            Try
                Dim cm As New OleDb.OleDbCommand
                Dim cn As New OleDb.OleDbConnection
                cm = New OleDb.OleDbCommand
                With cm
                    .Connection = cn
                    .CommandType = CommandType.Text
                    .CommandText = "INSERT INTO Drug (DrugCode, DrugName, Branch Code, Branch Name, Dosage, UM, Quantity, Date, ConsPRN, EMPCode, EMPName, EMPPos) VALUES ('DCode', 'DName', 'BCode', 'BName')"

                    .Parameters.Add(New System.Data.OleDb.OleDbParameter("DCode", System.Data.OleDb.OleDbType.VarChar, 255, Me.DCode.Text))
                    .Parameters.Add(New System.Data.OleDb.OleDbParameter("DName", System.Data.OleDb.OleDbType.VarChar, 255, Me.DName.Text))
                    .Parameters.Add(New System.Data.OleDb.OleDbParameter("BCode", System.Data.OleDb.OleDbType.VarChar, 255, Me.BCode.Text))
                    .Parameters.Add(New System.Data.OleDb.OleDbParameter("BName", System.Data.OleDb.OleDbType.VarChar, 255, Me.BName.Text))


                    ' RUN THE COMMAND
                    cm.Parameters("DCode").Value = Me.DCode.Text
                    cm.Parameters("DName").Value = Me.DName.Text
                    cm.Parameters("BCode").Value = Me.BCode.Text
                    cm.Parameters("BName").Value = Me.BName.Text


                    cm.ExecuteNonQuery()
                    MsgBox("Record saved.", MsgBoxStyle.Information)
                    Me.DCode.Text = ""
                    Me.DName.Text = ""
                    Me.BCode.Text = ""
                    Me.BName.Text = ""
                    Exit Sub
                End With
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Critical)
            Finally
            End Try
            ' MsgBox("Unable to save data. Please input blank fields!", MsgBoxStyle.Question + MsgBoxStyle.OkOnly, "Error")
        ElseIf response = MsgBoxResult.No Then
            Exit Sub
        End If
    End Sub
cm.Parameters(“DCode”).Value=Me.DCode.Text
cm.参数(“DName”).Value=Me.DName.Text
cm.参数(“BCode”).Value=Me.BCode.Text
cm.参数(“BName”).Value=Me.BName.Text

cn.Open()'关于错误消息,您不清楚什么?你的代码永远不会打开连接。此外,连接和命令对象在使用完毕后应予以处置。谢谢您,先生!:)
cm.Parameters("DCode").Value = Me.DCode.Text
cm.Parameters("DName").Value = Me.DName.Text
cm.Parameters("BCode").Value = Me.BCode.Text
cm.Parameters("BName").Value = Me.BName.Text
cn.Open() '<----- open the connection
cm.ExecuteNonQuery()
cn.Close() '<--- close the conenction
MsgBox("Record saved.", MsgBoxStyle.Information)
Me.DCode.Text = ""
Me.DName.Text = ""
Me.BCode.Text = ""
Me.BName.Text = ""