android中怎么将sqlite打包到APK发布
今天就跟大家聊聊有关android中怎么将sqlite打包到APK发布,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
正常的应用数据库放在/data/data/包名/database/test.db,应用发布时,这个数据库不会随着应用一起发布,
所以为了让我们已经准备好的数据正常使用,必须能实现数据库自身复制到sd卡下面,
实现拷贝res/raw/test.db下资源拷贝到SD卡下的/mnt/sdcard/test/test.db
packageyour.wzf.namespace.database;importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importyour.wzf.namespace.R;importandroid.content.Context;publicclassCopyDatabase{privatefinalStringDATABASE_PATH=android.os.Environment.getExternalStorageDirectory().getAbsolutePath()+"/nqxx_512022";privatefinalStringDATABASE_FILENAME="zylz.db";privateContextcontext;publicCopyDatabase(Contextcontext){this.context=context;}publicvoidOpenDataBase(){try{StringdatabaseFilename=DATABASE_PATH+"/"+DATABASE_FILENAME;Filedir=newFile(DATABASE_PATH);//判断SD卡下是否存在存放数据库的目录,如果不存在,新建目录if(!dir.exists()){dir.mkdir();}try{//如果数据库已经在SD卡的目录下存在,那么不需要重新创建,否则创建文件,并拷贝/res/raw下面的数据库文件if(!(newFile(databaseFilename)).exists()){///res/raw数据库作为输出流InputStreamis=this.context.getResources().openRawResource(R.raw.zylz);//用于存放数据库信息的数据流FileOutputStreamfos=newFileOutputStream(databaseFilename);byte[]buffer=newbyte[8192];intcount=0;//把数据写入SD卡目录下while((count=is.read(buffer))>0){fos.write(buffer,0,count);}fos.flush();fos.close();is.close();}}catch(FileNotFoundExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}}catch(Exceptione){}}}
只需要注意下,项目建立的时候不存在res/raw,只需要手动在res中建立raw文件夹
访问在sd卡中的数据库需要这样写:
packageyour.wzf.database.dal;importjava.util.ArrayList;importjava.util.List;importjava.util.UUID;importyour.wzf.database.dal.*;importyour.wzf.database.model.Model_Bt_Farmer;importandroid.content.Context;importandroid.database.Cursor;importandroid.database.sqlite.SQLiteDatabase;publicclassBt_Farmer{privateStringdatabasePath=android.os.Environment.getExternalStorageDirectory().getAbsolutePath()+"/nqxx_512022";privateStringdatabaseFileName="zylz.db";StringfullPath="";publicBt_Farmer(Contextcontext){fullPath=databasePath+"/"+databaseFileName;}/***插入一条记录*@paramfarmerModel_Bt_Farmer对象*/publicvoidInsert(Model_Bt_Farmerfarmer){SQLiteDatabasedb=SQLiteDatabase.openOrCreateDatabase(fullPath,null);db.execSQL("insertintoBT_FARMER(ID,NAME_,IDENTITY_CARD,NAME_PY)values(?,?,?,?)",newObject[]{farmer.getId(),farmer.getName(),farmer.getIdCard(),farmer.getName_py()});db.close();}}
看完上述内容,你们对android中怎么将sqlite打包到APK发布有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。