我正在尝试将项目填充到数据网格中,然后使用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提取,修改然后发送回数据库的数据集?
答案 0 :(得分:0)
当表中包含空格时,您应该通知CommandBuilder这个问题 设置QuotePrefix和QuoteSuffix属性以避免错误
cb.QuotePrefix = "["
cb.QuoteSuffix = "]"
这两个二进制文件的默认值是一个空字符串,因此,当您尝试将更改写回数据库时,会出现语法错误。