在我几个Android应用中,我需要访问已有的数据库。这些数据库往往很大,甚至超过asset文件大约1兆字节的限制。而且在新的版本中数据库需要更新。我在网上,特别是StackOverflow看了一些文章,并做了一些试验,觉得下面的代码能基本上满足我的需求。
其主要思路是:
1 把数据库分解成几个asset文件。
2 当需要打开数据库时,如果数据库不存在,就把那几个asset文件重新合并成一个数据库文件。
3 如果数据库的版本改变了,就在onUpgrade()方法中把数据库文件删除掉。
下面是代码:
//数据库的缺省路径
private static finalString DB_PATH = "/data/data/commypackagemyapp/databases/";
private static finalString DB_NAME = "mydbdb";
private static finalint DB_VERSION = 2;
private static finalString DB_SPLIT_NAME = "mydbdb00";
private static finalint DB_SPLIT_COUNT = 3;
private SQLiteDatabasem_database;
private final Contextm_context;
/
Constructor
保存传进来的context参数以用来访问应用的asset和资源文件。
@param context
/
public MyDB(Contextcontext) {
super(context, DB_NAME, null, DB_VERSION);
thism_context = context;
}
public static MyDBopenDatabaseReadOnly(Context context) {
MyDB db = new MyDB(context);
try {
dbcreateDataBase();
} catch (IOException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
dbopenDataBase(SQLiteDatabaseOPEN_READONLY);
return db;
}
public static MyDBopenDatabaseReadWrite(Context context) {
MyDB db = new MyDB(context);
try {
dbcreateDataBase();
} catch (IOException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
dbopenDataBase(SQLiteDatabaseOPEN_READWRITE);
return db;
}
/
创建一个空数据库,用来存储你已有的数据库。
/
public voidcreateDataBase() throws IOException{
boolean dbExist =checkDataBase();
if (dbExist) {
/
如果你的数据库的版本改变了,调用这个方法确保在onUpgrade()被调用时
传进去的是可写的数据库。
/
SQLiteDatabase db =thisgetWritableDatabase();
if (db != null) {
dbclose();
}
}
dbExist = checkDataBase();
if (!dbExist) {
以上就是关于如何访问一个应用程序的数据库中使用SQLite另一个应用程序全部的内容,包括:如何访问一个应用程序的数据库中使用SQLite另一个应用程序、sqlite3使用方法、100分 Sqlite能不能访问网络上的数据库呀怎么访问等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)