Vb.net 插入时获取错误:";查询值和目标字段的数量不相同;

Vb.net 插入时获取错误:";查询值和目标字段的数量不相同;,vb.net,ms-access,Vb.net,Ms Access,表单的插入语句 Imports System.Data Imports System.Data.OleDb Public Class form7 Dim inc As Integer Dim con As New OleDb.OleDbConnection Dim cmd As OleDbCommand Dim dbprovider As String Dim dbsource As String Dim str As String Di

表单的插入语句

Imports System.Data
Imports System.Data.OleDb

Public Class form7
    Dim inc As Integer
    Dim con As New OleDb.OleDbConnection
    Dim cmd As OleDbCommand
    Dim dbprovider As String
    Dim dbsource As String
    Dim str As String
    Dim ds As New DataSet
    Dim da As OleDb.OleDbDataAdapter
    Dim TotalRows As Integer
    Dim ID_Number As Integer

    Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        con = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Bank\db1.accdb ")
        con.Open()
        Dim cmd As New OleDbCommand("SELECT COUNT(*) FROM accountsTable", con)
        Dim totalRows As Long = CInt(cmd.ExecuteScalar())
        cmd.ExecuteNonQuery()
        textbox1.Text = totalRows + 1000
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Form5.Show()
        dbprovider = "Provider=Microsoft.ACE.OLEDB.12.0; dbsource=Data Source=D:\Bank\db1.accdb"
        MsgBox("Database is now open")
        'First_Name,Middle_Name,Last_Name,DOB,Age,Occupation,Marital_Status,Address,Account_Number)
        str = "insert into accountsTable values(" & TextBox1.Text & ",'" & TextBox2.Text & "','" & TextBox3.Text & "','" & TextBox4.Text & "','" & CDate(DateTimePicker1.Text) & "','" & TextBox6.Text & "'," & TextBox7.Text & ",'" & TextBox8.Text & "','" & TextBox9.Text & "','" & ComboBox1.Text & "','" & ComboBox2.Text & "','" & ComboBox3.Text & "','" & ComboBox4.Text & "','" & TextBox10.Text & "','" & TextBox11.Text & "','" & TextBox12.Text & "','" & TextBox13.Text & "')"
        cmd = New OleDb.OleDbCommand(str, con)
        cmd.ExecuteNonQuery()
        MsgBox("Record is inserted")
        con.Close()

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox3.Text = ""
        TextBox4.Text = ""
        DateTimePicker1.Text = ""
        TextBox6.Text = ""
        TextBox7.Text = ""
        TextBox8.Text = ""
        TextBox9.Text = ""
        ComboBox1.Text = ""
        ComboBox2.Text = ""
        ComboBox3.Text = ""
        TextBox10.Text = ""
        TextBox11.Text = ""
        TextBox12.Text = ""
        TextBox13.Text = ""
        ComboBox4.Text = ""

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Me.Close()
        Form3.Show()
    End Sub
End Class
期望在表的每一列中插入一个值。如果只想在某些列中插入值,则需要指定它们是哪些列,例如

INSERT INTO TableName VALUES (value1, value2, ...)
注:

  • 总是指定列名被认为是很好的形式

  • 您应该使用参数化查询,而不是将值直接插入SQL命令文本中


  • 错误是什么???错误很明显,您正在传递17个值,并且该表的列数不同。由于没有指定列,因此可能也无法正确更新它们。代码有几个问题,我会集中精力阅读MSDN中的所有示例。错误很明显,但他成功地隐藏了它:-)错误是:查询值和目标字段的数量不一样。(cmd.ExecuteNonQuery())您可以从这里看到图片我使用了这个,但仍然显示相同的问题(查询值的数量和目标字段不一样),您能帮我解决吗?
    INSERT INTO TableName (columnA, columnB, ...) VALUES (value1, value2, ...)