尝试通过VB表单将新记录提交到访问文件[.mdb]

时间:2018-06-27 01:58:35

标签: vb.net visual-studio

只有一名学生在从事他们的项目。尝试研究但没有运气,希望能为您提供帮助。 我目前要输入的表格编码如下。

Imports System.Data.OleDb

Public Class frmPlayerInput

    Dim Provider As String
    Dim dataFile As String
    Dim connString As String
    Dim myConnection As OleDbConnection = New OleDbConnection

    Private Sub btnHome_Click(sender As Object, e As EventArgs) Handles btnHome.Click
        frmHome.Show()
        Me.Hide()
    End Sub

    Private Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click
        Provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
        dataFile = "Z:\Desktop\players.mdb"
        connString = Provider & dataFile
        myConnection.ConnectionString = connString
        myConnection.Open()
        Dim str As String
        str = "Insert into Items ([FirstName].[Surname].[TopNumber]) Values (?,?,?)"
        Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection)
        cmd.Parameters.Add(New OleDbParameter("FirstName", CType(txtFirstName.Text, String)))
        cmd.Parameters.Add(New OleDbParameter("Surname", CType(txtSurname.Text, String)))
        cmd.Parameters.Add(New OleDbParameter("TopNumber", CType(txtTopNumber.Text, String)))

        Try
            cmd.ExecuteNonQuery()
            cmd.Dispose()
            myConnection.Close()
            txtFirstName.Clear()
            txtSurname.Clear()
            txtTopNumber.Clear()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles btnClear.Click, btnHome.Click
        txtFirstName.Clear()
        txtSurname.Clear()
        txtTopNumber.Clear()
    End Sub

End Class

1 个答案:

答案 0 :(得分:0)

  

错误消息:System.InvalidOperationException:'不允许   更改“ ConnectionString”属性。连接的当前状态   是开放的。'

之所以发生这种情况,是因为您正在打开连接,然后在引发异常时不关闭连接。这是为什么要在本地创建,使用和销毁此类对象的一个​​示例。使用连接对象的最正确方法是这样的:

Using connection As New OleDbConnection(connectionString)
    'Use connection here.
End Using

这将每次创建一个新的连接对象,这是首选选项。它是一个轻量级的对象,实际的数据库连接处于较低级别。 Using块还保证即使该块中引发了未处理的异常,连接也将关闭。

  

,并且在表格中打开的另一个错误是:查询值数量   和目标字段不同

发生这种情况是因为,正如我所说,您使用的点应使用逗号。 [FirstName].[Surname].[TopNumber]被解释为具有限定表和架构的一列,而不是三列。