Android 我的sqlite查询有什么问题?

Android 我的sqlite查询有什么问题?,android,sqlite,Android,Sqlite,我在安卓上使用sqlite,我一直得到同样的例外,我不明白为什么 桌子是空的 "CREATE TABLE IF NOT EXISTS " + STUDENTS_TABLE + "(" + STUDENT_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " + STUDENT_NAME + " TEXT NOT NULL, "

我在安卓上使用sqlite,我一直得到同样的例外,我不明白为什么

桌子是空的

"CREATE TABLE IF NOT EXISTS " + STUDENTS_TABLE
                            + "(" + STUDENT_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "
                            + STUDENT_NAME + " TEXT NOT NULL, "
                            + GROUP + " TEXT NOT NULL, "
                            + CONSTRAINT name_unique UNIQUE (STUDENT_NAME, GROUP));";
我所做的查询是尝试获取特定组中的所有学生

        String query = "SELECT * FROM " + STUDENTS_TABLE + " WHERE group + "=" + groupName;
例外是

android.database.sqlite.SQLiteException:near group:语法错误代码1:,编译时:从group=class1的学生中选择*

错误代码:1 SQLITE\u错误 原因:SQLquery错误或缺少数据库。 近组:语法错误代码1:,编译时:从group=class1的学生中选择*


我在我的查询中看不到任何错误

您必须输入引号,以便sqlite将其检测为字符串。试试这个:

String query = "SELECT * FROM `" + STUDENTS_TABLE + "` WHERE `group` + "='" + groupName +"'";

看起来你有一个“+”,它不应该是group+=应该是group=的地方,或者“group”可能需要是“group”什么?我不明白itGroup在SQL中也是一个关键字。在查询中,您可能应该像引用group一样引用它。您可能必须转义引号。如果不使用group或任何关键字作为列名,您可能会得到更好的结果。因此,我建议更改表的定义。字符串文字需要单引号。尽管语法在技术上不正确,但在某些情况下,如果在无法解析为标识符但允许使用字符串文字的上下文中使用双引号中的关键字,例如:key或glob,它可能仍然有效,然后,令牌被理解为字符串文字,而不是标识符。如果存在与文本匹配的有效标识符,则可能会产生神秘的结果。反引号与双引号存在相同的问题。为确保操作正确,应使用单引号,例如撇号',否则,如果存在与文字匹配的有效标识符,则可能会出现奇怪的错误。