首先把db放在res的下方创一个raw文件夹,里面用来放db

创一个DbHelper类,实际代码如下:

    package com.laci.db;      import android.content.Context;      import android.database.sqlite.SQLiteDatabase;      import android.database.sqlite.SQLiteOpenHelper;      import android.util.Log;      /**      * Created by Laci on 2017/6/25.      */      public class DbHelper extends SQLiteOpenHelper{          /**          *          * @param context 上下文          * @param name 数据库的名字          * @param factory 数据库工厂,null          * @param version  数据库的版本          */          public DbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {              super(context, name, factory, version);          }          @Override          public void onCreate(SQLiteDatabase db) {          }          @Override          public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {          }      }  

然后再相同的目录下创一个DbManager类

    package com.laci.db;      import android.content.Context;      import android.database.sqlite.SQLiteDatabase;      import android.os.Environment;      import com.zking.laci.android_project.R;      import java.io.File;      import java.io.FileOutputStream;      import java.io.InputStream;      /**      * Created by Laci on 2017/6/27.      */      public class DbManager {          public static final String DB_NAME = "wenwen.db"; //数据库名字          public static final String PACKAGE_NAME ="com.zking.laci.android_project";//包名          public static final String DB_PATH = "/data" + Environment.getDataDirectory().getAbsolutePath() + "/" + PACKAGE_NAME;   //数据库的绝对路径( /data/data/com.*.*(package name))          private SQLiteDatabase db;          private Context context;          public DbManager(Context context) {              this.context = context;          }          //对外提供的打开数据库接口          public void openDataBase() {              this.db = this.openDataBase(DB_PATH + "/databases");          }          //获取打开后的数据库          public SQLiteDatabase getDb() {              return this.db;          }          // 本地打开数据方法          private SQLiteDatabase openDataBase(String filePath) {              try {                  File file = new File(filePath);                  if (!file.exists()) { //判断文件是否存在                      //通过输入流和输出流,把数据库拷贝到"filePath"下                      file.mkdir();                      File file2=new File(filePath+"/"+DB_NAME);                      if (!file2.exists()) {                          InputStream is = context.getResources().openRawResource(R.raw.wenwen);//获取输入流,使用R.raw.test资源                          FileOutputStream fos = new FileOutputStream(file2);                          byte[] buffer = new byte[1024];                          int readCount;                          while ((readCount = is.read(buffer)) > 0) {                              fos.write(buffer, 0, readCount);                          }                          fos.close();                          is.close();                      }                  }      //打开数据库                  SQLiteDatabase db =new DbHelper(context,"wenwen.db",null,2).getWritableDatabase();                  return db;              } catch (Exception e) {                  e.printStackTrace();              }              return null;          }          //关闭数据库          public  void closeDataBase()          {              if(this.db!=null)                  db.close();          }      }  

最后在你第一个开始运行的activity中,写下以下代码

DbManager dbManager=new DbManager(getApplicationContext());         dbManager.openDataBase(); 

更多相关文章

  1. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  2. Android获取本机Mac地址及IP地址的方法
  3. ReactNative异常:{"errno":-4048,"code":"EPERM","syscall":"
  4. Android(安卓)MAT
  5. android intent和intent action大全
  6. android 获取网络资源
  7. Android(安卓)根据坐标获取地址
  8. Android(安卓)studio 3.1.3 无法获取pom文件
  9. android获取系统wifi状态等

随机推荐

  1. synchronized的实现原理和应用
  2. java集合系列(3)ArrayList
  3. 设计模式之装饰模式
  4. 学习资源大汇总
  5. 设计模式之享元模式
  6. jvm系列(5)性能监控工具
  7. java集合系列(4)fail-fast机制(面试常问)
  8. 设计模式之原型模式
  9. 深入分析java中的多态(从jvm角度)
  10. 40天之后我开通了流量主