【问题标题】:sqlite exception while creating db创建数据库时出现sqlite异常
【发布时间】:2016-03-03 13:25:45
【问题描述】:

我正在尝试使用以下 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.addEmployees(new Employee(id,from,to));
db.addGroup(new Group(Integer.valueOf(userId),name,session,groupId,groupName));

这两个查询都会引发以下错误消息

android.database.sqlite.SQLiteException:靠近“组”:语法错误 (代码 1): , 编译时: CREATE TABLE group(userId INTEGER PRIMARY KEY,name TEXT,sessionToken TEXT,groupId TEXT,groupName TEXT)

【问题讨论】:

  • group 是sql 中的保留关键字,因此将表名group 更改为group_ 之类的名称
  • 另一个选项是使用 ` 的转义组
  • 另外FROMTO是保留的SQL关键字

标签: android sqliteopenhelper


【解决方案1】:

重命名变量

String TABLE_GROUPS = "group"

类似

String TABLE_GROUPS = "groups"

groupsql 中的保留关键字。

Check here the list of reserved keywords in SQLite

【讨论】:

  • 有效但抛出另一个异常android.database.sqlite.SQLiteException: near "to": syntax error (code 1): , while compiling: INSERT INTO employee(to,from,domainId) VALUES (?,?,?)
  • @stanly 你坚持使用保留关键字:FROMTO 是保留 SQL 字。
  • to 又是 sqlite 中的保留字。所以将列名 'to' 更改为 'to_' 或类似的东西..
【解决方案2】:

你的表名不能是Group,Group是Sqlite中的关键字,To也是关键字

查看此处列出的 Sqlite 中的其他关键字。https://www.sqlite.org/lang_keywords.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多