我有vb.net应用程序从Access数据库中的表加载数据。该表有一个主键ID,它是一个自动增量列。我使用以下代码更新数据表:
daAdapter.Update(dsOptions.Tables("notes"))
但是出现以下错误:“INSERT INTO语句中的语法错误” 我怎么解决这个问题?
答案 0 :(得分:0)
当您的表包含Reserved Keywords之类的DESC时,需要TYPE来通知OleDbDataAdapter使用特殊字符来隔离列名。
例如。假设您以这种方式构建适配器
Using con = new OleDbConnection(.....)
Using cmd = new OleDbCommand("SELECT * FROM NOTES", con
con.Open
daAdapter = new OleDbDataAdapter(cmd)
Dim builder = new OleDbCommandBuilder(daAdapter)
builder.QuotePrefix = "["
builder.QuoteSuffic = "]"
daAdapter.InsertCommand = builder.GetInsertCommand()
.... rest of the code that fills the grid
现在,当您尝试为名为daAdapter
的OleDbDataAdapter调用方法Update时,InserCommand文本将是这样的
INSERT INTO [NOTES] ([soccerID], [Type], [Desc]) VALUES (?,?,?)
方括号的存在可防止语法错误。另请注意,如果您使用其他方法更新行,则需要在全局级别声明变量daAdapter