0

我正在尝试将项目填充到数据网格中,然后使用 2 个按钮(一个加载,一个将保存)和表单上的数据网格将它们更新回数据库。我在更新时不断遇到“查询表达式中的语法错误(缺少运算符)”,我不知道为什么。我的另一个问题是我的 DataAdapter 和 Dataset 需要在内存中的哪个位置进行标注?下课?

    'this loads my data from db into datagrid

    Dim con As New OleDb.OleDbConnection
    Dim sql As String

    con.ConnectionString = "Provider=Microsoft.jet.oledb.4.0;data source=dbsrc.mdb"

    con.Open()
    sql = "SELECT * from [Employee Assignments]"
    da = New OleDb.OleDbDataAdapter(sql, con)
    da.Fill(ds, "Assignments")

    con.Close()

    DataGridView1.DataSource = ds.Tables("Assignments")

以下代码应更新我的数据库以反映在 datagridview 中所做的更改

    'this will eventually update the datagrid back into the db

    Dim cb As New OleDb.OleDbCommandBuilder(da)
    Dim con As New OleDb.OleDbConnection

    'Dim sql As String
    con.ConnectionString = "Provider=Microsoft.jet.oledb.4.0;data source=dbsrc.mdb"

    con.Open()

    da.Update(ds, "Assignments")

    con.Close()

    DataGridView1.DataSource = ds.Tables("Assignments")

我在 msdn 上阅读了这篇文章 - http://msdn.microsoft.com/en-us/library/system.data.common.dataadapter.update.aspx - 但它似乎没有多大帮助,我很困惑,但我相信我的问题是没有识别正确的数据集并将其传递回数据库。我应该如何处理我使用 DataAdapter 提取、修改然后发送回数据库的数据集?

4

1 回答 1

0

当表的名称中包含空格时,您应该通知 CommandBuilder 设置QuotePrefix和 QuoteSuffix 属性以避免错误

cb.QuotePrefix = "["
cb.QuoteSuffix = "]"

这两个的默认值是一个空字符串,因此,当您尝试将更改写回数据库时,您会收到语法错误。

于 2013-03-06T16:55:24.660 回答