SQLiteDataReader 错误,靠近“表”:语法错误

Posted

技术标签:

【中文标题】SQLiteDataReader 错误,靠近“表”:语法错误【英文标题】:SQLiteDataReader error, near "table": syntax error 【发布时间】:2017-08-20 12:00:46 【问题描述】:

我的 C# 项目中有简单的 SQLite 数据库表 Database Screenshot

这是我用来从数据库中检索数据的代码:

SQLiteConnection dbConnection;
dbConnection = new SQLiteConnection("Data Source=./new.db;");
dbConnection.Open();
if (dbConnection.State == System.Data.ConnectionState.Open)
     richTextBox3.Text = "Conn";
string sqlcommand = "SELECT age FROM table WHERE index=1";
SQLiteCommand command = new SQLiteCommand(sqlcommand, dbConnection);
SQLiteDataReader result = command.ExecuteReader();
if(result.HasRows)

      while (result.Read())
      
           richTextBox1.Text = result.GetInt32(0) + " "+ result.GetString(1) + " " + result.GetInt32(2);
       
 

也许while循环不正确,但我的问题是表格附近的语法错误。

【问题讨论】:

table 是一个关键字,你必须使用你的表名(除了表词)来代替表词.. 循环也不起作用。在循环中,您在索引 0、1、2 处请求 3 个字段,但您的选择只有一个字段。这将在索引 0 处可用。请求索引 1 和 2 将导致 IndexOutOfRange 异常 【参考方案1】:

@Rohit 提到 table 是 SQLite 中的一个关键字,但如果您仍想使用它,您可以更改您的查询,如下所示: 用[table]包围你的表名

string sqlcommand = "SELECT age FROM [table] WHERE index=1";

它也适用于SQLSERVER

【讨论】:

【参考方案2】:

尝试在表之间添加``,因为表是保留字。您可以在reserved words查看所有保留字

string sqlcommand = "SELECT `age` FROM `table` WHERE `index`='1'";

【讨论】:

以上是关于SQLiteDataReader 错误,靠近“表”:语法错误的主要内容,如果未能解决你的问题,请参考以下文章

SQLite错误(1):靠近“=”:语法错误

不匹配的输入 'org' 期望在表文件格式规范中靠近 'BY' 的 StringLiteral

错误 SchemaUpdate:237 - 靠近“来自”:语法错误

sqlite3.OperationalError:靠近“%”:语法错误

sqlite3.OperationalError:靠近“BatchID”:语法错误

android.database.sqlite.SQLiteException:靠近“”:语法错误