VB.Net更新具有自动增量列的数据库表

时间:2014-02-05 20:26:04

标签: vb.net syntax adapter auto-increment

我有vb.net应用程序从Access数据库中的表加载数据。该表有一个主键ID,它是一个自动增量列。我使用以下代码更新数据表:

daAdapter.Update(dsOptions.Tables("notes"))

但是出现以下错误:“INSERT INTO语句中的语法错误” 我怎么解决这个问题? enter image description here

1 个答案:

答案 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