android导入外部数据库的使用

来源:互联网 发布:淘宝超过发货时间 编辑:程序博客网 时间:2024/06/08 14:29

   在android中有时候要用到外部已经生产好了的数据库文件,我们该如何访问外部已经写好的数据库文件呢?

   第一步,把数据库文件拷贝到我们的安卓项目下的assets目录下,如下:

                                 

   第二步,android中不是不能直接访问assets下的数据库文件的,所以我们得把assets下的数据库文件复制到/data/data/package/databases下,其中

/data/data/package/databases中的package是你的应用程序包名,下面代码将数据库文件拷贝到指定该目录下

package whzy.jjgd.useexistdb;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import android.content.Context;import android.os.Environment;public class DBManager {private Context mContext;// 数据库名public static final String DB_NAME = "X3crhtrain.db";// 应用程序包名public static final String PACKAGE_NAME = "whzy.jjgd.useexistdb";// 数据库路径public static final String DB_PATH = "/data"+ Environment.getDataDirectory().getAbsolutePath() + "/"+ PACKAGE_NAME + "/databases";DBManager(Context context){mContext = context;}public void copyDatabase(){File db_path = new File(DB_PATH);if(!db_path.exists()){db_path.mkdirs();}File dbfile = new File(db_path, DB_NAME);// 判断数据库文件是否存在,// 若不存在,将/assets下的数据库文件导入到/data/data/package/databases下// 若存在,就直接打开数据库try {if (!dbfile.exists()) {// 获取读取/assets下的数据库文件的输入流InputStream is = mContext.getResources().getAssets().open(DB_NAME);// 创建往数据库中写数据的输出流FileOutputStream fos = new FileOutputStream(dbfile);byte[] buffer = new byte[1024];int count = -1;while((count = is.read(buffer)) != -1){fos.write(buffer, 0, count);}fos.close();is.close();}} catch (IOException e) {e.printStackTrace();}}}

执行应用程序后,我们将可以看到你项目包名对应下将会有我们想访问的数据库了,如下

                                   

之后,我们就可以访问该数据库文件了。

0 0