美文网首页
Android怎么把数据库跟随项目打包到手机里

Android怎么把数据库跟随项目打包到手机里

作者: 高巨龙 | 来源:发表于2017-12-13 19:40 被阅读176次

使用说明:

出于安全角度,一般不推荐直接把数据库打包在项目里,应当放在服务器里用户下载后,加载到手机里。本文只适合用来参考。有问题地方欢迎指出。

1.先在res目录下建立一个文件夹raw,把数据库db放到raw里。

声明:权限

    <uses-permission android:name="android.permission.RECEIVE_SMS" >

数据库名字和手机里的路径

public static String dbName="note.db";
private static String DATABASE_PATH="/data/data/com.example.julong.words( 相对路径 )/databases/";//数据库在手机里的路径

使用:加载db对象

    //调用
    SQLiteDatabase db;
    db=SQLiteDatabase.openOrCreateDatabase("/data/data/com.example.julong.words/databases/note.db"(路径),null);

/**
* 将raw目录下的数据库复制到手机路径
*/
把数据库加载到手机里:

public void copyDataBase() throws IOException{
    String databaseFilenames =DATABASE_PATH+dbName;

    File dir = new File(DATABASE_PATH);
    if(!dir.exists())//判断文件夹是否存在,不存在就新建一个
        dir.mkdir();
    FileOutputStream os = null;

    try{
        os = new FileOutputStream(databaseFilenames);//得到数据库文件的写入流
    }catch(FileNotFoundException e){

        e.printStackTrace();
    }
    InputStream is = MainActivity.this.getResources().openRawResource(R.raw.note);//得到数据库文件的数据流
    // 分配接收缓冲区
    byte[] buffer = new byte[8192];
    int count = 0;
    try{

        while((count=is.read(buffer))>0){

            os.write(buffer, 0, count);  // 读写文件
            os.flush();
        }
    }catch(IOException e){

    }
    try{
        is.close();
        os.close();
    }catch(IOException e){
        e.printStackTrace();
    }
}

/**
* 判断手机文件夹是否有次数据库
*/

public boolean checkDataBase(){
    SQLiteDatabase checkDB = null;
    try{
        String databaseFilename = DATABASE_PATH+dbName;
        checkDB =SQLiteDatabase.openDatabase(databaseFilename, null,
                SQLiteDatabase.OPEN_READONLY);
    }catch(SQLException e){

    }
    if(checkDB!=null){
        checkDB.close();
    }
    return checkDB !=null?true:false;
}

相关文章

网友评论

      本文标题:Android怎么把数据库跟随项目打包到手机里

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