数据库更改后出现OleDbDataAdapter错误

时间:2019-05-07 12:56:39

标签: c# ms-access oledb oledbdataadapter

我一整天都没有想办法,只是找不到我的错误。我有一个ms-access数据库和一个c#程序,应该用来更新db中的数据。不幸的是,我不断收到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();行 当我在数据库中插入一列时,访问是否可能重新排列或弄乱某些索引?

非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我知道了!问题是我有一个保留关键字作为列名。现在一切都很好