Android Sqlite 数据初始化
android系统下每个程序的数据存放在 /data/data/(package name)/ 目录下,数据库则是在/dababases/目录下..
所以,你只要用FileInputStream读取原数据库,再用FileOutputStream把读取到的东西写入到那个目录就可以了..
操作方法:1. 把原数据库包括在项目源码的 res/raw 目录下.
2.创建一个类来控制database..如下:
private final int BUFFER_SIZE = 400000;
public static final String DB_NAME = "myDatabase.db"; //保存的数据库文件名
public static final String PACKAGE_NAME = "com.android.ImportDBTest";//包名
public static final String DB_PATH = "/data"
+ Environment.getDataDirectory().getAbsolutePath() + "/"
+ PACKAGE_NAME; //在手机里存放数据库的位置
private SQLiteDatabase database;
private Context context;
DBManager(Context context) {
this.context = context;
}
public void openDatabase() {
this.database = this.openDatabase(DB_PATH + "/" + DB_NAME);
}
private SQLiteDatabase openDatabase(String dbfile) {
try {
if (!(new File(dbfile).exists())) { //判断数据库文件是否存在,若不存在则执行导入,否则直接打开数据库
InputStream is = this.context.getResources().openRawResource(
R.raw.myDatabase); //欲导入的数据库
FileOutputStream fos = new FileOutputStream(dbfile);
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(dbfile,
null);
return db;
} catch (FileNotFoundException e) {
Log.e("Database", "File not found");
e.printStackTrace();
} catch (IOException e) {
Log.e("Database", "IO exception");
e.printStackTrace();
}
return null;
}
然后在需要用到数据库的时候,用实例化一个DatabaseManager类,调用其openDatabase方法就可以返回一个SQLiteDatabase对象了..如下:
转载于:https://www.cnblogs.com/yingql/archive/2011/12/12/2284841.html
Android Sqlite 数据初始化相关推荐
- Android Sqlite 数据的存储
一般在开发程序中,经常使用数据的存储功能,如在使用Delphi开发程序时,存储程序的简单设置的INI文件,在C#开发中有时也需要存储简单的设置,个人一般存储在XML中,也在INI中存储过,但是不如XM ...
- android与mysql数据库同步_android开发 如何通过web服务器访问MYSQL数据库并且使其数据同步到android SQLite数据库?...
通过web服务器访问MYSQL数据库有以下几个过程: 1.在MySql下创建自己的数据库和自己的表单 2.连接数据库. 3.访问数据库 1.创建web工程 (服务器端) 在Myeclipse下新建一个 ...
- android SQLite 批量插入数据慢的解决方案 (针对于不同的android api 版本)
android SQLite 批量插入数据慢的解决方案 (针对于不同的android api 版本) 参考文章: (1)android SQLite 批量插入数据慢的解决方案 (针对于不同的andro ...
- android用于查询数据的方法,android: SQLite查询数据
掌握了查询数据的方法之后,你也就将数据库的 CRUD 操 作全部学完了.不过千万不要因此而放松,因为查询数据也是在 CRUD 中最复杂的一种 操作. 我们都知道 SQL 的全称是 Structured ...
- android sqlite批量操作,Android: SQLite批量插入数据的最佳实践
大家都知道,Android里数据库用的是SQLite.在实际开发过程中,我们有时候会遇到批量插入数据的场景.这篇文章给大家分享一个小技巧,让批量插入数据达到最快的目的. 首先,我先创建一个Table, ...
- android sqlite使用之模糊查询数据库数据的三种方式
android sqlite使用之模糊查询数据库数据的三种方式 android应用开发中常常需要记录一下数据,而在查询的时候如何实现模糊查询呢?很少有文章来做这样的介绍,所以这里简单的介绍下三种sql ...
- [Android]SQLite版本升级前后数据对比
[Android]SQLite版本升级前后数据对比 前言 目前AOSP采用3.22.0版本的SQLite.截至目前,SQLite.org官网释放的最新版为3.31.1. 为了论证3.31.1是否在An ...
- Android SQLite在应用中数据保存查询,但是拷贝的xxx.db没有数据或没有更新,.db_wal和.db_shm文件
Android SQLite在应用中数据保存能查询,但是拷贝的xxx.db没有数据或没有更新问题,.db_wal和.db_shm文件是什么 文章目录 问题 原因 解决方法 SQLite的.db_wal ...
- android中保存多行数据,Android使用SQLite数据库存数数据
Android使用SQLite数据库存数数据 前面我们介绍了用 SharedPreferences 和文件存储信息的方法,但是当频繁大量地使用数据存储时,就要用到数据库来管理信息数据. 在 Andro ...
最新文章
- 第1条:考虑用静态工厂方法代替构造器
- LeetCode 451. Sort Characters By Frequency
- 控制反转(Ioc)和依赖注入(DI)
- Linux free指令查看内存使用情况
- Selenium定位不到元素的解决方法—iframe挡住了去路
- 家庭无线组网 网友经济无线上网搭配方案
- vscdoe之通过Ctrl+S实现代码格式自动化
- L - Farm Irrigation (并查集
- 理解String不可变
- 安装 PHP memcached 扩展遇到的3个问题
- 在线Excel的前端组件、控件,实现web Excel
- php生成流水号,生成唯一流水号
- ISBN(国际标准书号)的校验
- flutter学习笔记之Dart-8 问号、双问号、感叹号的理解
- 软件工程和计算机科学考公务员,软件工程可以考公务员吗
- 项目中生成requests.txt文件(virtualenv与pipreqs)
- latex 参考文献显示问号_终于用回vscode写LaTeX了
- javascript英语单词音节拆分_音节拆分与合并
- 《战争通论》详细分析世界十大兵书…
- 日程表mysql_web编程之日程表模块(PHP+Mysql+Ajax)
热门文章
- excel删除重复数据保留一条_VBA利用字典删除重复行,保留唯一值
- 有效的数独Python解法
- 最长递增子序列的个数Python解法
- linux文件系统分隔符,Linux的哲学思想和文件系统
- mysql 存储过程 条件_mysql sql存储过程条件定义与处理
- % mysql 代表_MySQL中的星号(*)和百分号(%)代表表示什么,MySQL的库名、表名、字段名、字段值是否区分大...
- java工具类下载_java文件下载工具类
- win7 linux16.04双系统,安装windows7+ubuntu16.04双系统
- 嵌入式驱动自学者的亲身感受,有什么建议?
- 有一个工程师男(女)朋友是什么样的体验?