美文网首页
sqlite3数据库导入到Android项目中

sqlite3数据库导入到Android项目中

作者: 最黑暗的自己 | 来源:发表于2018-02-06 17:52 被阅读185次

第一步:将数据库文件放入到assets目录中。注意Androidstudio需要将assets目录建在main项目下。即和Java,res等文件夹是同级的。

1.assets:不会在R.java文件下生成相应的标记,assets文件夹可以自己创建文件夹,必须使用AssetsManager类进行访问,存放到这里的资源在运行打包的时候都会打入程序安装包中,

2.res:会在R.java文件下生成标记,这里的资源会在运行打包操作的时候判断哪些被使用到了,没有被使用到的文件资源是不会打包到安装包中的。

res/raw和assets文件夹来存放不需要系统编译成二进制的文件,例如字体文件等

在res文件夹下还可以定义一下目录:

res/anim:这里存放的是动画资源。

res/xml:可以在Activity中使用getResource().getXML()读取这里的资源文件

res/raw:该目录下的文件可以直接复制到设备上,不能有子文件夹,编译软件时,这里的数据不需要编译,直接加入到程序安装包中,使用方法是getResource().OpenRawResources(ID),其中参数ID的形式是R.raw.XXX.

第二步:首次使用app,将assets目录下的数据库文件加载到android手机的sd下。

1、

private void initDB() {

//1,归属地数据拷贝过程

initAddressDB("address.db");

}

2、

/**

* 拷贝数据库值files文件夹下

* @param dbName 数据库名称

*/

private void initAddressDB(String dbName) {

//1,在files文件夹下创建同名dbName数据库文件过程

File files = getFilesDir();

File file = new File(files, dbName);

if(file.exists()){

return;

}

InputStream stream = null;

FileOutputStream fos = null;

//2,输入流读取第三方资产目录下的文件

try {

stream = getAssets().open(dbName);

//3,将读取的内容写入到指定文件夹的文件中去

fos = new FileOutputStream(file);

//4,每次的读取内容大小

byte[] bs = new byte[1024];

int temp = -1;

while( (temp = stream.read(bs))!=-1){

fos.write(bs, 0, temp);

}

} catch (Exception e) {

e.printStackTrace();

}finally{

if(stream!=null && fos!=null){

try {

stream.close();

fos.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

相关文章

网友评论

      本文标题:sqlite3数据库导入到Android项目中

      本文链接:https://www.haomeiwen.com/subject/tvzgzxtx.html