更改数据库后的 OleDbDataAdapter 错误

Posted

技术标签:

【中文标题】更改数据库后的 OleDbDataAdapter 错误【英文标题】:OleDbDataAdapter error after change in database 【发布时间】:2019-05-07 12:56:38 【问题描述】:

我一整天都在想办法解决这个问题,只是找不到我的错误。我有一个 ms-access 数据库和一个应该更新数据库中数据的 c# 程序。不幸的是,我不断收到System.Data.OleDb.OleDbException: Syntaxerror in update statement

我正在使用OleDbConnectionOleDbDataAdapter,一切(除了一列)都运行良好。我不知道为什么我一直收到该列的上述错误(它的格式与其他列一样 -> 文本),所以我删除了该列并再次创建它。现在,我尝试进行的每一次更改都会出错。

public void changeFields(string id, string name, string famName, string department) 
   DataSet myDS = new DataSet();
   using (OleDbConnection conn = new OleDbConnection(connectionString)) 
      conn.Open();
      OleDbDataAdapter adapter = new OleDbDataAdapter();
      adapter.SelectCommand = new OleDbCommand("SELECT * FROM Table WHERE ID = '"+ id +"', conn);
      OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);

      myDS.Tables["Table"].Rows[0]["Name"] = name;
      myDS.Tables["Table"].Rows[0]["FamilyName"] = famName;
      myDS.Tables["Table"].Rows[0]["Department"] = department;

      adapter.Update(myDS, "Table");
      conn.Close();
   

列的名称是正确的,如果我

Console.WriteLine(myDS.Tables["Table"].Rows[0]["Name"];

就在我尝试更新之前。 我实际上得到了正确更改的版本。错误总是发生在行adapter.Update(); 当我将列插入数据库时​​,访问是否可能会重新排列或弄乱某些索引?

非常感谢您的帮助

【问题讨论】:

数据库中id 列的数据类型是什么? @ChrisDunaway 短文,每一列都是短文 【参考方案1】:

我想通了!问题是我有一个保留关键字作为列名。现在一切正常

【讨论】:

以上是关于更改数据库后的 OleDbDataAdapter 错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 Jet 的 OleDbDataAdapter 数据类型不匹配

使用 vb.net、oledbdataadapter 更新数据库时出现问题

OleDbDataAdapter 忽略 Excel 单元格中的数据

如何将准备好的语句与 OleDbDataAdapter 一起使用?

OleDbDataAdapter 填充创建重复行

是否有任何指示器可以知道OleDbDataAdapter是否根据提供的查询获得了记录?