android sqlite数据库,第一次调用getWritableDatabase或者getReadableDatabase后,就会在程序的包下创建一个数据库,之前执行SQLiteOpenHelper的onCreate方法,
当数据库创建了以后,是不会再创建的,只有通过升级数据库版本号来实现
当数据库的版本号发生了变化以后,SQLiteOpenHelper会调用onUpgrade方法
因此都是在onUpgrade来处理新增字段,新增表等 *** 作
要替换数据库
将原来数据库放到res/raw目录下,程序启动的时候,通过流读取了来,并写到你程序目录下
String dbfile = "/data"+ EnvironmentgetDataDirectory()getAbsolutePath() + "/"+ contextgetPackageName()+"数据库名"
InputStream is = contextgetResources()openRawResource(Rrawdata);
FileOutputStream fos = new FileOutputStream(dbfile);
byte[] buffer = new byte[1024];
int count = 0;
while ((count =isread(buffer)) > 0) {
foswrite(buffer, 0, count);
fosflush();
}
fosclose();
isclose();
这样就把数据库给替换了,但是通常不建议这么做
最好是在onUpgrade来处理
请采纳哈
编写一个类继承sqliteopenhelper即可,需要复写里面的几个方法,一个是创建数据库方法,首次运行的时候如果发现没有则会调用创建方法,一个是更新数据库方法,在数据库版本号变化的时候会调用更新方法,方便修改数据库结构,具体的可以百度一下,有很多详细的教程
比如
:应用21对应数据库版本是1,22对应的数据库版本是2,那么用户现在安装的是22版本的应用,那么他现在在覆盖安装上21版本的,这时候的数据库相关代码就会有问题,就是降级相关的。我意思是用户又使用之前的版本了,那么数据库版本号不是也降低了吗?这时候会报错的
每次打开数据库版本号,估计你并没有对数据库有新的 *** 作,所以还是以前的版本号:
以下的方式可以切换数据库版本号:
SQLiteDatabase db = SQLiteDatabaseopenDatabase(filegetPath(), null, SQLiteDatabaseOPEN_READWRITE);
dbbeginTransaction();
dbsetVersion(1);
dbsetTransactionSuccessful();
dbendTransaction();
以上就是关于将开发的android app 安装到手机上后,如何在如见代码中替换手机上原有的数据库全部的内容,包括:将开发的android app 安装到手机上后,如何在如见代码中替换手机上原有的数据库、Android怎么使用内置数据库sqllite、Android 数据库降级怎么处理啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)