在把数据库文件放在raw中,在应用程序中如何打开
1、DbManager代码
package com.zyh.zyhimportdatabase; import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream; import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment; public class DbManager {
private static final int BUFFER_SIZE = 1024;
private static final String DB_NAME = "person2.db";
private static final String PACKAGE_NAME = "com.zyh.zyhimportdatabase";
private static final String DB_PATH = "/data" +
Environment.getDataDirectory().getAbsolutePath() + "/" + PACKAGE_NAME; private SQLiteDatabase database;
private Context context; public DbManager(Context context){
this.context = context;
} public void openDatabase(){
this.database = this.openDatabase(DB_PATH + "/" + DB_NAME);
} private SQLiteDatabase openDatabase(String dbFile) {
try {
File db_file = new File(dbFile);
if(!db_file.exists()){
InputStream is = this.context.getResources().openRawResource(R.raw.person2);
FileOutputStream fos = new FileOutputStream(dbFile);
byte[] buffer = new byte[BUFFER_SIZE];
int len = 0;
while((len = is.read(buffer)) > 0){
fos.write(buffer, 0, len);
}
fos.close();
is.close();
} SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(db_file, null);
return db;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
} public SQLiteDatabase getDb(){
return this.database;
} public void closeDatabase(){
this.database.close();
}
}
2、activity代码
package com.zyh.zyhimportdatabase; import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.app.Activity;
import android.database.sqlite.SQLiteDatabase; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //Log.i("zyh", Environment.getDataDirectory().getAbsolutePath());
DbManager dbHelper = new DbManager(getApplicationContext());
dbHelper.openDatabase();
SQLiteDatabase db = dbHelper.getDb();
System.out.println(db.isReadOnly());
dbHelper.closeDatabase(); } }
上述代码的参考:http://www.cnblogs.com/xiaowenji/archive/2011/01/03/1925014.html
注意:A、关于对getReadableDatabase()的误区:可以参考http://blog.csdn.net/liuhe688/article/details/6715983/和http://blog.chinaunix.net/uid-22816738-id-3802353.html
B、关于多线程对db的使用,正确的方法可以参考:http://blog.csdn.net/sky_monkey/article/details/23820021
在把数据库文件放在raw中,在应用程序中如何打开的更多相关文章
- mdb数据库文件如何导入Microsoft SQL Server 2008中
1.在‘开始’菜单打开‘Microsoft SQL Server 2008→SQL Server Management Studio’. 2.新建一个数据库(名称自定义),选择新建的数据库点击右键选择 ...
- 操作无法完成,因为文件夹已在另一个程序中打开(the action can't be completed because the folder or a file in it is open in another program)
解决方法: 启动任务管理器——性能——资源监视器——CPU选项卡——关联的句柄——搜索句柄 ——(输入)要删除的文件夹名——搜索到与文件夹名句柄相关联的进程 (由于此程序进程正在调用文件夹,才造成了对 ...
- win10无法删除文件夹(其中的文件或者文件夹已在另一个程序中打开)怎么办?
1. 右键点击任务管理器 2.打开资源监视器 3.搜索任务,结束任务(可能会死机)
- Xcode中iOS模拟器程序中的plist路径
Xcode6.4里写了个简单的iOS程序在模拟器中跑. 其中用到了NSUserDefaults来保存属性文件plist,那么这个文件实际路径在哪里呢?在网上搜了一下,发现几种说法(*表示当前用户名): ...
- 一脸懵逼学习Hadoop中的MapReduce程序中自定义分组的实现
1:首先搞好实体类对象: write 是把每个对象序列化到输出流,readFields是把输入流字节反序列化,实现WritableComparable,Java值对象的比较:一般需要重写toStrin ...
- ASP.NET MVC默认配置如有跳转到指定的Area区域中的对应程序中
今天在搭建一个基于MVC的项目,因为项目涉及到了手机和pc端,为了方便和减少二者之间的耦合我在区域(Areas)中建立了两个 程序空间,那么问题来了我想让程序默认跳转到我所指定的areas中的对应项目 ...
- SQL Server 2008R2数据库文件导入到SQL Server 2008数据库中
最近,电脑重装系统之后,安装了SQL Server 2008.附加数据库文件的时候,发现无法附加,提示版本不对.想起来,原来的数据库版本是SQL Server 2008R2.低版本的数据库管理工具无法 ...
- XamarinSQLite教程在Xamarin.iOS项目中定位数据库文件
XamarinSQLite教程在Xamarin.iOS项目中定位数据库文件 开发者可以在指定的路径中找到复制的数据库文件,具体的操作步骤如下: (1)单击Mac电脑中Finder菜单中的“前往”|“前 ...
- django中,如何把所有models模型文件放在同一个app目录下?
django的每个app目录下,都有自己的models.py文件. 原则上,每个app涉及的数据库,都会定义在这个文件里. 但是,有的数据库,涉及到多个app应用,不是很方便放在一个单独的app里. ...
随机推荐
- uva11536 Smallest Sub-Array
Thinking about it: 我的思路跟sliding window有点类似.假设已经确定了一个区间[l, r],序列中从 l 到 r 恰好包含了[1, K]的各个元素,则从 r 开始继续迭代 ...
- Cocos2d-x init() 和 onEnter() 区别
在Cocos2d-x中经常碰到 init() 和 onEnter() init()和onEnter()这两个方法都是CCNode的方法. 1.二者的执行顺序是:先init() 后onEnter(). ...
- Android清单文件具体解释(三)----应用程序的根节点<application>
<application>节点是AndroidManifest.xml文件里必须持有的一个节点,它包括在<manifest>节点下.通过<application>节 ...
- NS2 nam中节点及数据流颜色设置
NS2 节点颜色设置在http://hi.baidu.com/jrwen0/item/d105c642f4c3ce36fb89601b说明的比較具体,大家能够參见. 我这里想说的是数据流颜色的设置,相 ...
- 悬浮二维码 QQ ToTop
//回顶部 <div id="lqdbe" style="position: absolute; visibility: visible; z-index: 1; ...
- C#中常量\枚举\结构及数组的运用
又一天结束了,今天在云和学院学习的知识下面继续来做总结. 一.常量\枚举\结构的运用 理论: 常量:const 类型 常量名 = 常量值 确定数量.确定值的几个取值:东西南北.男女.上中下. 枚举: ...
- 使用PowerShell 命令集进行SQL Server 2012 备份和还原
最近心相不错,所以打算翻译一些英文文档做福利,原文在此,翻译有不足的地方还请各位兄弟指点. 讨论什么是DBA最重要的工作的时候,你最常听到就是一条就是DBA只要做好备份和恢复.事实如此,如果你不做备份 ...
- LightOJ 1033 Generating Palindromes(dp)
LightOJ 1033 Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...
- UrlEncode编码/UrlDecode解码
public class encode { public static void main(String[] args) throws UnsupportedEncodingException ...
- oracle 集合变量以及自定义异常的用法
oracle 集合变量以及自定义异常的用法, 在过程 record_practice 有record变量和自定义异常的用法实例.具体在3284行. CREATE OR REPLACE Package ...