Android 使用外部db数据库文件
来源:互联网 发布:大学生找工作知乎 编辑:程序博客网 时间:2024/06/02 00:23
先简单说下步骤:
将格式为.db的数据库文件放到android项目assets目录中;
在程序必要的时候,将其“拷贝”(文件读取)到Android 程序默认的数据库存储目录中,一般路径为“/data/data/项目包名/databases/“;
自定义SQLiteOpenHelper类,创建一个名字跟步骤1中.db名称一样的数据库;
按照平常逻辑,增删改查数据库。
下面做下详细讲解:
步骤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<ProvinceBean> getProvinceList(){ List<ProvinceBean> proList = new ArrayList<ProvinceBean>(); 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格式的数据库文件。可以看下下篇文章。
2 0
- Android 使用外部db数据库文件
- 【Android】GreenDao操作外部DB数据库文件
- 。DB数据库文件的使用
- 如何使用外部的数据库文件
- android手机命令行下不能使用sqlite3命令查看*.db数据库文件解决办法
- android手机命令行下不能使用sqlite3命令查看*.db数据库文件解决办法
- android手机命令行下不能使用sqlite3命令查看*.db数据库文件解决办法
- android手机命令行下不能使用sqlite3命令查看*.db数据库文件解决办法
- android手机命令行下不能使用sqlite3命令查看*.db数据库文件解决办法
- android如何使用数据库文件?
- android如何使用数据库文件?
- Android访问外部DB文件
- Android访问外部DB文件
- Android 将.sql格式文件转换为.db格式数据库文件
- android调试数据库的时候,使用adb pull /mnt/sdcard/xx.db d:\xx.db取得的数据库文件为0kb
- Android数据库GreenDAO3.2.2的使用(三,GreenDao操作外部数据库----操作.db数据库)
- Sqlite_命令行创建DB数据库文件
- sqlitespy怎么打开.db数据库文件
- s3c2440串口编程
- Struts(3)工作机制及分析
- Python中的“_"
- Servlet 容器对URI的处理
- 题目:最小路径和
- Android 使用外部db数据库文件
- zmq技术--网络通信
- 借力“搜索营销漏斗”SEM效果更上一层楼
- 打印日历
- Android_ConnectivityManager连接管理
- 勒索软件发展趋势及其防护策略
- iOS使用NSMutableAttributedString实现富文本
- Happy Number
- 异常处理,使用实体类