vb.net。。。使用access时我做错了什么

vb.net。。。使用access时我做错了什么,vb.net,syntax,Vb.net,Syntax,我的问题是在da.Update(dt)。我收到一封信,说这件事没有处理。INSERT INTO语句中出现语法错误。奇怪的是,以前我只保存了10个项目,现在它一点也不混乱了。谢谢你的帮助 Dim dt As New DataTable Dim ds As New DataSet con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= C:\MyComplete.accdb;Persist Sec

我的问题是在da.Update(dt)。我收到一封信,说这件事没有处理。INSERT INTO语句中出现语法错误。奇怪的是,以前我只保存了10个项目,现在它一点也不混乱了。谢谢你的帮助

Dim dt As New DataTable
    Dim ds As New DataSet

    con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= C:\MyComplete.accdb;Persist Security Info=False;"

    con.Open()
    MsgBox("here")
    ds.Tables.Add(dt)

    Dim da As New OleDbDataAdapter

    da = New OleDbDataAdapter("SELECT * FROM DealerReview", con)

    da.Fill(dt)


    Dim newRow As DataRow = dt.NewRow

    newRow.Item(1) = User
    newRow.Item(2) = Associate
    newRow.Item(3) = "1"
    newRow.Item(4) = Time
    newRow.Item(5) = Hold
    newRow.Item(6) = GreetingR
    newRow.Item(7) = GreetingA
    newRow.Item(8) = GreetingO
    newRow.Item(9) = GreetingTs
    newRow.Item(10) = GreetingG
    newRow.Item(11) = holdUpdate
    newRow.Item(12) = LookupSize
    newRow.Item(13) = DlyD
    newRow.Item(14) = SiPrice
    newRow.Item(15) = SiDoorPrice
    newRow.Item(16) = TBrand
    newRow.Item(17) = TModel
    newRow.Item(18) = SeveralChoices
    newRow.Item(19) = Financing
    newRow.Item(20) = Benefits
    newRow.Item(21) = Apt
    newRow.Item(22) = ITime
    newRow.Item(23) = AssociateScore
    newRow.Item(24) = hms
    newRow.Item(25) = ymd
    newRow.Item(26) = ElapsedTime


    dt.Rows.Add(newRow)
    Dim cb As New OleDbCommandBuilder(da)
    cb.GetInsertCommand()
    da.Update(dt)
    MsgBox("Saved")
    con.Close()

这是当项目的计数和/或数据类型与要写入的表的列定义不匹配时发生的错误。还有其他可能性,但由于您提到添加了更多项,并且没有向我们显示表定义,因此这似乎是最有可能的可能性


您不能只向数据库命令中添加更多的项(列),它们必须与您从中/向中读取/写入的表列相匹配。

好的,这样access中的列将需要与保存的变量相同的名称吗?我对这还不太熟悉,所以有点迷路了。就目前情况而言,这是我所有关于我的数据库的代码。如果您使用名称,那么是的。但是您发布的代码只是使用了它们的列号:Item(1)、Item(2)等等。您需要进入Access数据库并查看dealErrorReview表的定义。我的答案(上面)是关于匹配列的数量和类型,是的。不过,在我的评论中,我提到了这些名称。因此,如果它更像Item(User),或者我正在更改Item,那么如果您想使用列名,它将是Item(“User”)。当然,您还必须匹配列名。只使用列号是可以的,但是大多数人认为使用列名有利于代码的可读性(尽管从微观上看比较慢)。+1:因为,像往常一样,需要帮助时寻求帮助是件好事。