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. QueryFilter与SpatialFilter - 浅谈

    我们知道,GIS不仅仅有属性查询,还有空间查询.而 QueryFilter 对应于 属性查询,而 SpatialFilter 对应于 空间查询.

  2. Search 和 Select比较 - 浅谈

    Search 语法: public IFeatureCursor Search (    IQueryFilter filter,    bool Recycling); Select 语法: pub ...

  3. 读书笔记_Effective_C++_条款二十二:将成员变量声明为private

    1.格式统一 在调用的时候,不会去想有没有(),一律是有get(),或者set()之类的. 2.封装 能直接访问得越少,表明封装性越高, 封装性越高,我们的顾虑就少了, 例如:我们a.data*0.9 ...

  4. uva 280 - Vertex

    #include <iostream> #include <cstdio> using namespace std; #include <vector> #defi ...

  5. Microsoft Visual C++ 2005 SP1 Redistributable 安装错误

    1.在安装Microsoft Visual C++ 2005 SP1 Redistributable时报错:Command line option syntax error.Type Command ...

  6. web标准(复习)--1

    XHTML CSS基础知识 一.xhtml css基础知识首先说一下我们这节课的知识点 1.文档类型 2.语言编码 3.html标签 4.css样式 5.css优先级 6.css盒模型组成 1)文档类 ...

  7. C语言初学 数学中带根号的复杂计算问题

    #include<stdio.h> #include<math.h> int main() { double a,b; scanf("%lf%lf",&am ...

  8. DataTables列过滤器

    var table = $('#example').DataTable(); table.columns().flatten().each( function ( colIdx ) { // Crea ...

  9. Gradient Descent 和 Stochastic Gradient Descent(随机梯度下降法)

    Gradient Descent(Batch Gradient)也就是梯度下降法是一种常用的的寻找局域最小值的方法.其主要思想就是计算当前位置的梯度,取梯度反方向并结合合适步长使其向最小值移动.通过柯 ...

  10. CCI_chapter 2 Linked Lists

    2.1  Write code to remove duplicates from an unsorted linked list /* Link list node */ struct node { ...