Android数据库太大,无法在onCreate上创建
在我的应用程序中,我使用了两个Datatabase 这是处理数据库管理和对其进行的所有查询的类Android数据库太大,无法在onCreate上创建,android,database,Android,Database,在我的应用程序中,我使用了两个Datatabase 这是处理数据库管理和对其进行的所有查询的类 public class Database { private DbHelper DBHelper; private final Context Context; private SQLiteDatabase MyDBone, MyDBtwo; static Context ctx; private static class DbHelper extends
public class Database {
private DbHelper DBHelper;
private final Context Context;
private SQLiteDatabase MyDBone, MyDBtwo;
static Context ctx;
private static class DbHelper extends SQLiteOpenHelper {
public DbHelper(Context context, String dbName, int dbVersion) {
super(context, dbName, null, dbVersion);
}
@Override
public void onCreate(SQLiteDatabase db) {
// This is where the two databases are created
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVesion) {
// database upgrades are handled here
}
}
}
// database constructor
public Database(Context c) {
Context = c;
ctx = c;
}
// database open
public Database open() throws SQLException {
DBHelper = new DbHelper(Context, BD_NAME, BD_VERSION);
// I have here some if code to decide witch one of the bellow is used
if{
MyDBone = DBHelper.getWritableDatabase();
} else{
MyDBtwo = DBHelper.getWritableDatabase();
}
return this;
}
// database close
public void close() {
DBHelper.close();
}
public Cursor getData(........) {
// My querys are made here
}
}
我的问题是数据库太大了。在onCreate方法中,我得到一个错误:方法onCreate(SQLiteDatabase)的代码超过了65535字节的限制
。另一方面,我的应用程序越来越大
我想知道解决此问题的最佳方法是什么,因为我无法更改数据库。由于我的应用程序必须脱机运行,因此无法在Web服务器上进行查询 我认为最好的办法是,在应用程序第一次运行时,从互联网上的某个地方(驱动器、dropbox或其他方面)下载数据库。但是由于我的编程技能有点生疏,我必须把这件事放在今后必做的事情上 在维护我的数据库类时,是否可以将apk与数据库预先打包并安装到SD卡上?另一方面,这将增加apk大小(数据库的总大小为15MB) 请就解决这一问题的最佳方式提出建议 问候,
favolas这不是数据库问题,而是Dalvik方法大小限制的问题。你可以重构你的代码,我想你可以把一个.db文件放在你的资产中,而不是在计算机上创建它fly@iccthedral谢谢你说的是在
onCreate中创建两个函数,然后将数据库一个代码放在一个函数中,将数据库两个代码放在另一个函数中?@NathanZ Ok。然后,将数据库移动到SD卡,是否可以从资产中删除原始数据库?对不起,如果这是一个哑巴question@iccthedral如果数据库没有增长,这是一个可能的解决方案。谢谢还有其他建议吗?