查询/更新MS Access记录

时间:2013-03-06 16:48:48

标签: vb.net oledb

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

    '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上发现了这个artcle - http://msdn.microsoft.com/en-us/library/system.data.common.dataadapter.update.aspx - 但它似乎没什么帮助,我很困惑,但我相信我的问题不是识别并将正确的数据集传回数据库。我应该如何处理我使用DataAdapter提取,修改然后发送回数据库的数据集?

1 个答案:

答案 0 :(得分:0)

当表中包含空格时,您应该通知CommandBuilder这个问题 设置QuotePrefix和QuoteSuffix属性以避免错误

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

这两个二进制文件的默认值是一个空字符串,因此,当您尝试将更改写回数据库时,会出现语法错误。