先简单说下步骤:

  1. 将格式为.db的数据库文件放到android项目assets目录中;

  2. 在程序必要的时候,将其“拷贝”(文件读取)到Android 程序默认的数据库存储目录中,一般路径为“/data/data/项目包名/databases/“;

  3. 自定义SQLiteOpenHelper类,创建一个名字跟步骤1中.db名称一样的数据库;

  4. 按照平常逻辑,增删改查数据库。


    下面做下详细讲解:

步骤1:如下图,将数据库文件copy到assets目录中

步骤2:将db文件读取拷贝到databases目录中,代码如下:

package com.kinth.youdian.activity.boti.util;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import android.annotation.SuppressLint;import android.content.Context;/** * 将assets中的db文件拷贝到databases中 * @author Botision.Huang * @Date: 2015-8-18 下午4:11:24 * @Descp: TODO */public class DatabaseUtil {    @SuppressLint("SdCardPath")    public static void packDataBase(Context context){        // com.kinth.youdian 是程序的包名,请根据自己的程序调整        // /data/data/com.kinth.youdian/databases目录是准备放 SQLite 数据库的地方,也是 Android 程序默认的数据库存储目录        // 数据库名为 db_youdian.db         String DB_PATH = "/data/data/com.kinth.youdian/databases/";        String DB_NAME = "db_youdian.db";        // 检查 SQLite 数据库文件是否存在         if (!(new File(DB_PATH + DB_NAME)).exists()) {            // 如 SQLite 数据库文件不存在,再检查一下 database 目录是否存在            File f = new File(DB_PATH);            // 如 database 目录不存在,新建该目录            if (!f.exists()) {                f.mkdir();            }            try {                // 得到 assets 目录下我们实现准备好的 SQLite 数据库作为输入流                InputStream is = context.getAssets().open(DB_NAME);                // 输出流,在指定路径下生成db文件                OutputStream os = new FileOutputStream(DB_PATH + DB_NAME);                // 文件写入                byte[] buffer = new byte[1024];                int length;                while ((length = is.read(buffer)) > 0) {                    os.write(buffer, 0, length);                }                // 关闭文件流                os.flush();                os.close();                is.close();            } catch (Exception e) {                e.printStackTrace();            }        }    }}

步骤3:代码如下

package com.kinth.youdian.activity.boti.dbdao;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;/** * 【省市区】数据库帮助类 * @author Botision.Huang * @Date: 2015-8-18 下午4:21:33 * @Descp: TODO */public class ProvinceDataHelper extends SQLiteOpenHelper {    private static final String DATABASE_NAME = "db_youdian.db";    private static final int DATABASE_VERSION = 1;    /** Create a helper object for the Events database */    public ProvinceDataHelper(Context ctx) {        super(ctx, DATABASE_NAME, null, DATABASE_VERSION);    }    @Override    public void onCreate(SQLiteDatabase db) {}    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}}

步骤4:做完以上3个步骤之后,下面我们就可以按照正常逻辑,去操作数据库啦,譬如下代码:

package com.kinth.youdian.activity.boti.dbdao;import java.util.ArrayList;import java.util.List;import com.kinth.youdian.activity.boti.dbdao.bean.ProvinceBean;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;public class ProvinceDao {    private ProvinceDataHelper helper;    private SQLiteDatabase db = null;    public ProvinceDao(Context mContext){        helper = new ProvinceDataHelper(mContext);    }    /**     * 从本地数据库获取省份列表     * @return     */    public List getProvinceList(){        List proList = new ArrayList();        try{            db = helper.getReadableDatabase();            Cursor cursor = db.rawQuery("select * from province", null);            if(null != cursor){                while(cursor.moveToNext()){                    int id = cursor.getInt(cursor.getColumnIndex("id"));                    String name = cursor.getString(cursor.getColumnIndex("name"));                    ProvinceBean bean = new ProvinceBean();                    bean.setId(id);                    bean.setName(name);                    proList.add(bean);                }            }            cursor.close();        }catch(Exception e){            e.printStackTrace();        }finally{            if(null != db){                db.close();            }        }        return proList;    }}

最后,我们会问,那.db格式的数据库文件如何获取呢?如果你有.sql格式的数据库文件,可以利用Navicat Lite去获取得到.db格式的数据库文件。可以看下下篇文章。

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. 为x86进行android NDK程序开发要注意的问题
  6. Android(安卓)把个Excel 搞成sqlite数据库文件 并放在Assets里打
  7. Android文件下载之进度检测
  8. android sharedUserId sharedPreferences
  9. Android(安卓)使用 ios中的部分Emoji表情(也可以替换任意系统的em

随机推荐

  1. Android屏蔽HOME键亲测可用
  2. android adb devices no permission
  3. Android架构组件(2)LifecycleRegistry 源码
  4. Android(安卓)实现 Launcher
  5. Android实现手机摄像头的自动对焦
  6. Android(安卓)系统启动流程
  7. Android的 EditText的inputType类型
  8. 在Maven项目中使用Android(安卓)Support
  9. Android(安卓)error 处理-有空就更新
  10. Android(安卓)ActionBar和ToolBar的使用