C# - From 子句中的 OleDB 语法错误

Posted

技术标签:

【中文标题】C# - From 子句中的 OleDB 语法错误【英文标题】:C# - OleDB Systax Error in From Clause 【发布时间】:2014-01-10 05:34:43 【问题描述】:

我正在使用 Microsoft Access 创建一个“桌面数据库”并将其作为“new.mdb”保存到我的 C# Debug 文件夹中。

但是,在使用 SELECT 语句时,我的 C# 项目会引发异常。

这是我的数据库

这是我的代码

   conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=new.mdb");
            conn.Open();
            dataset = new DataSet();
            string sqlStatement = "SELECT * FROM User";
            dbAdapter = new OleDbDataAdapter(sqlStatement, conn);
            oOrderDetailsCmdBuilder = new OleDbCommandBuilder(dbAdapter);
            dbAdapter.Fill(dataset);
            contactsTab = dataset.Tables[0];
            contactsTab.TableName = "User";
            rows = contactsTab.Rows;

执行该代码时的错误是

Syntax error in FROM clause.

但是,查询看起来不错。有什么问题吗?

谢谢!

编辑:

OleDbCommand.ExecuteNonQuery(示例:创建新表)适用于此。我不确定为什么 SELECT 语句没有:/

【问题讨论】:

【参考方案1】:

User 是 SQL 中的保留关键字。所以像下面这样写SQL

 string sqlStatement = "SELECT * FROM [User]";

【讨论】:

哇..简直不敢相信。作品!但我还有一个问题。所以如果我必须在这个问题中使用[],那么其他人呢?像contactsTab.TableName = "User"; 和插入新行DataRow uTabRow = dataset.Tables["User"].NewRow();。我也需要它们吗? 用户只是 SQL 中的关键字。不在数据集中。每当编写 TSQL 语句时,都要检查这些关键字。上述错误来自 DB 而不是来自 c#。 @user2301818 如果我的回答对您有帮助,请标记为答案。谢谢

以上是关于C# - From 子句中的 OleDB 语法错误的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 FROM 子句中的这个语法错误?

获取execl表中内容时报错 FROM 子句语法错误。来高手

插入语句 C# OleDb 中的语法错误

访问中的 from 子句中的语法错误

Access 2003 SQL:from 子句中的语法错误

FROM 子句访问中的语法错误