首先把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. 【FAQ】Ubuntu环境下ant编译android代码问题
  2. 如何获取Android原生代码所有Branchs和Tags
  3. android中清空一个表。类似truncate table 表名 这样的功能 andr
  4. Android系统进程Zygote启动过程的源代码分析(2)
  5. Android之——代码混淆
  6. Android源代码下载指南(图解)

随机推荐

  1. SQL Server 触发器详情
  2. SQL Server 2017无法连接到服务器的问题
  3. 使用SQL SERVER存储过程实现历史数据迁移
  4. SQL Server2017使用IP作为服务器名连接服
  5. DataGrip 格式化SQL的实现方法(自定义Sql
  6. 万能密码的SQL注入漏洞其PHP环境搭建及防
  7. Android(安卓)异步更新UI----AsyncTask
  8. Android(安卓)View详解
  9. Android(安卓)开发中使用 SQLite 数据库
  10. Android(安卓)开发之旅:又见Hello World!