2016-03-03 68 views
0

我试图使用下面的SQLite查询创建表。创建数据库时sqlite异常

private static final String CREATE_EMPLOYEE_TABLE = "CREATE TABLE " + TABLE_EMPLOYEE + "(" 
      + KEY_DOMAIN_ID + " INTEGER PRIMARY KEY," 
      + KEY_FROM + " TEXT," 
      + KEY_TO + " TEXT" + ")"; 

private static final String CREATE_GROUPS_TABLE = "CREATE TABLE " + TABLE_GROUPS + "(" 
     + KEY_USERID + " INTEGER PRIMARY KEY," 
     + KEY_NAME + " TEXT," 
     + KEY_SESSION_TOKEN + " TEXT," 
     + KEY_GROUP_ID + " TEXT," 
     + KEY_GROUP_NAME + " TEXT" + ")";` 

林使用以下代码来添加元素为db,

db.addEmployees(new Employee(id,from,to)); 
db.addGroup(new Group(Integer.valueOf(userId),name,session,groupId,groupName)); 

这些查询的两个抛出以下错误消息

android.database.sqlite.SQLiteException:邻近“组“:语法错误 (code 1):,while compiling:CREATE TABLE group(userId INTEGER PRIMARY KEY,name TEXT,sessionToken TEXT,groupId TEXT,groupName TEXT)

+6

group是'sql'中的保留关键字,因此将表名'group'改为'group_'之类的东西 – ELITE

+0

另一种选择是用' – 4gus71n

+0

另外'FROM'和'TO'是保留的SQL关键字 –

回答

7

重命名变量

String TABLE_GROUPS = "group"

为类似

String TABLE_GROUPS = "groups"

groupsql保留关键字。

Check here the list of reserved keywords in SQLite

+0

,但是在编译时引发另一个异常'android.database.sqlite.SQLiteException:near“to::syntax error(code 1):INSERT INTO employee(to ,from,domainId)VALUES(?,?,?)' –

+0

有关为何发生此错误的任何想法? –

+1

@你坚持使用保留关键字:'FROM'和'TO'是保留的SQL字。 –