DB文件要放在Assets文件夹下,封装一个工具类,如下:

 package com.XX.DB;

 import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream; import android.content.Context;
import android.content.res.AssetManager;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment; /**
* SQLite帮助类:打开外部DB文件
*
* @author XX
* @since 2015年7月8日 11:20:28
*/
public class DBManager {
public static SQLiteDatabase mDatabase = null;
private static Context mContext;
/**
* 数据库名字
*/
public static String DB_NAME = "ExternalDB.db";
/**
* 内存DB文件存储路径
*/
public static String DB_PATH = "";
private static int BUFFER_SIZE = 40000; /**
* 单例模式:获取DBManager实例
*
* @param context
* @return
*/
public static SQLiteDatabase getInstance(Context context) {
mContext = context;
DB_PATH = "/data" + Environment.getDataDirectory().getAbsolutePath()
+ "/" + mContext.getPackageName() + "/databases";
if (mDatabase == null) {
synchronized (DBManager.class) {
mDatabase = openDatabase();
}
}
return mDatabase;
} /**
* 获取数据库
*
* @return
*/
public SQLiteDatabase getDatabase() {
return mDatabase;
} /**
* 设置数据库
*
* @param db
*/
public void setDatabase(SQLiteDatabase db) {
mDatabase = db;
} /**
* 关闭数据库
*/
public void closeDatabase() {
if (mDatabase != null) {
mDatabase.close();
}
} /**
* 从本地读取DB文件 ,并加载到内存
*
* @param dB_PATH
* @return
*/
private static SQLiteDatabase openDatabase() {
try {
File file = new File(DB_PATH);
// 如果内存中不存在,则开始导入
if (!file.exists()) {
file.mkdirs();
AssetManager manager = mContext.getAssets();
InputStream is = manager.open(DB_NAME);
FileOutputStream fos = new FileOutputStream(DB_PATH + "/"
+ DB_NAME);
byte[] buffer = new byte[BUFFER_SIZE];
int count = 0;
while ((count = is.read(buffer)) > 0) {
fos.write(buffer, 0, count);
}
fos.close();
is.close();
}
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(DB_PATH
+ "/" + DB_NAME, null);
return db;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}

Android打开外部DB文件的更多相关文章

  1. 【原】使用SQLite打开本地*.db文件

    1.下载安装文件:官网下载地址:http://www.sqlite.org/download.html32位安装包:http://www.sqlite.org/2016/sqlite-tools-wi ...

  2. eclipse Android项目 DDMS db文件 导出 Failed to pull selection null 问题

    我在 eclipse的Android项目中,在 DDMS导出db文件 时,发现报错:Failed to pull selection null 在左侧选中设备,在进行导出 这样就可以正常的进行导出db ...

  3. MFC 打开外部EXE文件的三种方法

    目前知道三种方式:WinExec,ShellExecute ,CreateProcess,别人已经总结的很好了<vc中调用其他应用程序的方法(函数) winexec,shellexecute , ...

  4. Android GreenDao操作外部DB数据库文件

    1.背景 所谓外部数据库文件此处指的就是一个在外部单独创建的db文件,假设有这么一个场景,我们项目中有一些本地数据,不需要接口去获取的(不需要进行网络操作),写死的数据,比如全国各个省各个市的一些基本 ...

  5. 将android模拟器上的db文件拷贝到电脑上

    1. db文件在android手机中的存储地址一般都是/data/data/packname/databases/db_file. 2.打开cmd,运行 adb shell ,使用root权限 3.通 ...

  6. android开发之使用SQLite数据库(db文件)

    在开发中,有时须要使用db文件数据库.所以就须要将其导入项目,再将其使用程序写入到应用的db文件下使用. 代码非常easy.能够拿来直接使用. 要使用须要两个步骤: 1.创建raw文件.导入db文件. ...

  7. android 打开各种文件(setDataAndType)转:

    android 打开各种文件(setDataAndType) 博客分类: android-->非界面 android 打开各种文件 setDataAndType action动作  转自:htt ...

  8. Android Studio 导入外部lib文件

    Android Studio 导入外部lib文件   1.将jar包放入Module里的lib文件夹中.(自己创建lib文件夹) 2.在project选中jar包点击右键"Add as li ...

  9. MFC 用ShellExecute打开外部文件

    知识点: 获取CListCtrl选中文本 用ShellExecute打开外部文件 一.CListCtrl::GetFirstSelectedItemPosition CListCtrl::GetFir ...

随机推荐

  1. 《Linux多线程服务器端编程》读书笔记第3章

    <Linux多线程服务器端编程>第3章主要讲的是多线程服务器的适用场合与常用的编程模型. 1.进程和线程 一个进程是"内存中正在运行的程序“.每个进程都有自己独立的地址空间(ad ...

  2. Sql Server 连接池及其用法

    其实我们一直在使用SqlServer的连接池.在连接字符串中,Pooling为是否启用连接池,默认值为true,表示启用. 与连接池相关的两个重要参数是 Min Pool Size和 Max Pool ...

  3. haslayout引起的IE6 :hover失效

    大家都知道IE6之支持<a>标签的:hover为了,但是通常在做实际效果的时候<a>标签 :hover在IE6下会失效, 看代码: [code="html" ...

  4. kettle 连接 mysql 出错 Driver class 'org.gjt.mm.mysql.Driver' could not be found, make sure the ……

    解决办法:1: 首先,到官网下载mysql-connector-java. 2: 把驱动文件放置在data-integration\lib\ 目录下

  5. setf

    independent flags boolalpha read/write bool elements as alphabetic strings (true and false). showbas ...

  6. C语言之链表————(转载)

    #include <stdio.h>#include <malloc.h>#define LEN sizeof(struct student) /*-------------- ...

  7. Android ActionBar 返回为NULL

    AndroidBar返回为NULL.是因为values-v11和values-v14下面的style的主题的设置的原因. 在SDK 11的设备上,会使用第二处,SDK 14会使用第三处. 只需要将三个 ...

  8. maven配置文件解析

    maven2配置文件主要分为settings.xml与pom.xml两种,下面将逐一介绍. ===================================settings.xml======= ...

  9. [每日一题jQuery] jQuery选择器总结:进一步过滤、同级操作、后代操作

    jQuery选择器继承自CSS的风格,可以通过jQuery选择器找出特定的DOM元素,在此基础上对该元素做相应处理.jQuery不仅支持简单的标签选择器.类选择器.id选择器,还针对表单状态.子元素. ...

  10. 格式化用jad反编译混淆过的代码,能去大部分错误 (zhuanzai)

    http://blog.csdn.net/chruan/article/details/8484783