重新安装后第一次运行我的应用时出现此错误: android.database.sqlite.SQLiteException:没有这样的表
(当我的应用尝试从数据库中读取时会发生此错误)
由于某种原因,DBHelper中的onCreate()方法没有被调用,因此没有创建表。我按照其他问题的建议尝试调用getWritableDatabase(),也试过create()调用在一些表中插入数据,但仍然没有运气:onCreate永远不会被调用。
我通过将DATABASE_VERSION值更改为2来实现它。但这没有意义,因为这是卸载后的全新安装。 另外我发现在SQL读取错误之前数据库已经创建但是它只有一个表“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);
}
}
答案 0 :(得分:2)
好的,我发现了这个问题,希望这些解释可以帮助其他人做些什么。问题是我有一个单独的日历模块,我想访问我的数据库。为了使事情更简单&#39;我在该模块上创建了一个单独的DatabaseHelper,以访问与我的主模块相同的SQLite数据库。第二个DatabaseHelper的存在引起了我的所有问题。解决方案是将2个模块合并为一个,或使用数据库服务提供商