【问题标题】:Android ORMLite DbHelper onCreate() not called even after uninstall即使在卸载后也不会调用 Android ORMLite DbHelper onCreate()
【发布时间】:2015-03-09 22:09:17
【问题描述】:

我在重新安装后第一次运行我的应用程序时遇到此错误: android.database.sqlite.SQLiteException: 没有这样的表

(当我的应用尝试从数据库中读取数据时会发生此错误)

由于某种原因,未调用 DBHelper 中的 onCreate() 方法,因此未创建表。我遵循其他问题的建议并尝试调用 getWritableDatabase(),还尝试调用 create() 来在某个表中插入数据,但仍然没有运气:永远不会调用 onCreate。

但是,我通过将 DATABASE_VERSION 值更改为 2 来使其工作。但这没有意义,因为这是卸载后的全新安装。 我还发现在 SQL 读取错误之前创建了数据库,但它只有 1 个表“android_metadata”(不是我创建的)。 我在这里发布一些代码供参考

 
public class DatabaseHelper extends OrmLiteSqliteOpenHelper{
    private static final String DATABASE_NAME = "RoutePlanner.db";
    private static final int DATABASE_VERSION = 1;

    private Dao<Trip, Integer> tripDAO = null;
    private RuntimeExceptionDao<Trip, Integer> tripRunTimeDAO = null;
     ...
}

@Override
    public SQLiteDatabase getWritableDatabase() {
        return super.getWritableDatabase();
}

public DatabaseHelper(Context context){
        super(context, DATABASE_NAME,null, DATABASE_VERSION,    R.raw.ormlite_config);
}

@Override
public void onCreate(SQLiteDatabase db, ConnectionSource source) {

        try {
            Log.i(DatabaseHelper.class.getSimpleName(), "onCreate");
            TableUtils.createTable(source, Trip.class);
            ...
        } catch (SQLException ex) {
            Log.e(DatabaseHelper.class.getSimpleName(), "Error creating db", ex);
            throw new RuntimeException(ex);

        }
}

【问题讨论】:

  • 好的,我找到了问题,希望这个解释能帮助其他人不做什么。问题是我有一个单独的日历模块,我想访问我的数据库。为了让事情“更简单”,我在该模块上创建了一个单独的 DatabaseHelper 来访问与我的主模块相同的 SQLite 数据库。第二个 DatabaseHelper 的存在导致了我所有的问题。解决方案要么将 2 个模块合二为一,要么使用数据库服务提供商
  • 如果您认为它会帮助其他人,您应该将其作为您自己问题的答案,或者您应该删除此问题。
  • 完成。我是新来的,谢谢你的提示!

标签: android ormlite


【解决方案1】:

好的,我发现了问题,希望这个解释可以帮助其他人不做什么。问题是我有一个单独的日历模块,我想访问我的数据库。为了让事情“更简单”,我在该模块上创建了一个单独的 DatabaseHelper 来访问与我的主模块相同的 SQLite 数据库。第二个 DatabaseHelper 的存在导致了我所有的问题。解决方案要么将 2 个模块合二为一,要么使用数据库服务提供者

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    相关资源
    最近更新 更多