android - Sqlite从原始文件创建带有多个表的数据库

标签 android mysql sqlite

我想在 Sqlite 中创建一个包含 2 个表的数据库。 对于 1 个表有效,但对 2 个表无效。我的原始文件夹中有一个 create_schema.sql 文件,其中包含:

CREATE TABLE USER_USA (
    _id integer PRIMARY KEY NOT NULL UNIQUE,
    user varchar NOT NULL UNIQUE,
    pass varchar NOT NULL UNIQUE,
    cod varchar
    );

CREATE INDEX UNIQUE_ENTRY_DATE ON USER_USA (_id);

我有这个:

   if (mDb == null || !mDb.isOpen()) {

            final File dbFile = mContext.getDatabasePath(MyDbClass.DB_NAME);
            final boolean wasExisting = dbFile.exists();
            if (!wasExisting) {
                // We read the sql to create the DB
                final String createDbStatement;
                try {
                    createDbStatement = ResourceUtils.getRawAsString(mContext, R.raw.create_schema);

                    // If it's not present we create it
                    DatabaseUtils.createDbFromSqlStatements(mContext, MyDbClass.DB_NAME, DB_VERSION, createDbStatement);

                } catch (IOException e) {
                    e.printStackTrace();
                    Log.e(TAG_LOG, "Error creating DB", e);
                    return;
                }
            }

            mDb = mContext.openOrCreateDatabase(MyDbClass.DB_NAME, Context.MODE_PRIVATE, null);

        }

现在,如果我尝试修改 create_schema.sql 文件,如下所示,则不起作用:

  CREATE TABLE USER_USA (
        _id integer PRIMARY KEY NOT NULL UNIQUE,
        user varchar NOT NULL UNIQUE,
        pass varchar NOT NULL UNIQUE,
        cod varchar
        );
CREATE TABLE GOOGLE_KEY (
        _id integer PRIMARY KEY NOT NULL UNIQUE,
        regid varchar NOT NULL UNIQUE,

        );
CREATE INDEX UNIQUE_ENTRY_DATE ON USER_USA (_id);
CREATE INDEX UNIQUE_ENTRY_DATE ON GOOGLE_KEY (_id);

我哪里错了?

错误:

android.database.sqlite.SQLiteException: no such table: GOOGLE_KEY (code 1): , while compiling: SELECT * FROM GOOGLE_KEY

最佳答案

这是创建表语句的不正确结尾:

CREATE TABLE GOOGLE_KEY (
    _id integer PRIMARY KEY NOT NULL UNIQUE,
    regid varchar NOT NULL UNIQUE,

    );

那里有一个悬挂的逗号,因此不会构建该表。查看第一个创建表语句的结尾,并将其修复为与该语句类似。

关于android - Sqlite从原始文件创建带有多个表的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29865637/

相关文章:

android - 如何有选择地删除 Android Firebase 通知(在系统托盘中)

android - 在 Android 中使用 XML

java - Android 点击时改变文本颜色

PHP 查询 - 当用户 ID 存储在另一个表中时,如何添加新列并在表中插入用户信息?

javascript - 适合这种场景的技术是什么?

sql - 管理 SQLite 数据库子集版本

android - medianBlur 在 opencv4android 中不起作用

mysql - 使用子查询的替代方案 - 无法在 Mysql 中创建 View

c - SQLite C API 如何将查询输出保存到字符串

sql - 如何格式化数据库中的许多值?