android系统下每个程序的数据存放在 /data/data/(package name)/ 目录下,数据库则是在/dababases/目录下..
所以,你只要用FileInputStream读取原数据库,再用FileOutputStream把读取到的东西写入到那个目录就可以了..

操作方法:1. 把原数据库包括在项目源码的 res/raw 目录下.
2.创建一个类来控制database..如下:

public class DatabaseManager{
        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对象了..如下:

SQLiteDatabase db = new DBManager(this).openDatabase();

转载于:https://www.cnblogs.com/yingql/archive/2011/12/12/2284841.html

Android Sqlite 数据初始化相关推荐

  1. Android Sqlite 数据的存储

    一般在开发程序中,经常使用数据的存储功能,如在使用Delphi开发程序时,存储程序的简单设置的INI文件,在C#开发中有时也需要存储简单的设置,个人一般存储在XML中,也在INI中存储过,但是不如XM ...

  2. android与mysql数据库同步_android开发 如何通过web服务器访问MYSQL数据库并且使其数据同步到android SQLite数据库?...

    通过web服务器访问MYSQL数据库有以下几个过程: 1.在MySql下创建自己的数据库和自己的表单 2.连接数据库. 3.访问数据库 1.创建web工程 (服务器端) 在Myeclipse下新建一个 ...

  3. android SQLite 批量插入数据慢的解决方案 (针对于不同的android api 版本)

    android SQLite 批量插入数据慢的解决方案 (针对于不同的android api 版本) 参考文章: (1)android SQLite 批量插入数据慢的解决方案 (针对于不同的andro ...

  4. android用于查询数据的方法,android: SQLite查询数据

    掌握了查询数据的方法之后,你也就将数据库的 CRUD 操 作全部学完了.不过千万不要因此而放松,因为查询数据也是在 CRUD 中最复杂的一种 操作. 我们都知道 SQL 的全称是 Structured ...

  5. android sqlite批量操作,Android: SQLite批量插入数据的最佳实践

    大家都知道,Android里数据库用的是SQLite.在实际开发过程中,我们有时候会遇到批量插入数据的场景.这篇文章给大家分享一个小技巧,让批量插入数据达到最快的目的. 首先,我先创建一个Table, ...

  6. android sqlite使用之模糊查询数据库数据的三种方式

    android sqlite使用之模糊查询数据库数据的三种方式 android应用开发中常常需要记录一下数据,而在查询的时候如何实现模糊查询呢?很少有文章来做这样的介绍,所以这里简单的介绍下三种sql ...

  7. [Android]SQLite版本升级前后数据对比

    [Android]SQLite版本升级前后数据对比 前言 目前AOSP采用3.22.0版本的SQLite.截至目前,SQLite.org官网释放的最新版为3.31.1. 为了论证3.31.1是否在An ...

  8. Android SQLite在应用中数据保存查询,但是拷贝的xxx.db没有数据或没有更新,.db_wal和.db_shm文件

    Android SQLite在应用中数据保存能查询,但是拷贝的xxx.db没有数据或没有更新问题,.db_wal和.db_shm文件是什么 文章目录 问题 原因 解决方法 SQLite的.db_wal ...

  9. android中保存多行数据,Android使用SQLite数据库存数数据

    Android使用SQLite数据库存数数据 前面我们介绍了用 SharedPreferences 和文件存储信息的方法,但是当频繁大量地使用数据存储时,就要用到数据库来管理信息数据. 在 Andro ...

最新文章

  1. 第1条:考虑用静态工厂方法代替构造器
  2. LeetCode 451. Sort Characters By Frequency
  3. 控制反转(Ioc)和依赖注入(DI)
  4. Linux free指令查看内存使用情况
  5. Selenium定位不到元素的解决方法—iframe挡住了去路
  6. 家庭无线组网 网友经济无线上网搭配方案
  7. vscdoe之通过Ctrl+S实现代码格式自动化
  8. L - Farm Irrigation (并查集
  9. 理解String不可变
  10. 安装 PHP memcached 扩展遇到的3个问题
  11. 在线Excel的前端组件、控件,实现web Excel
  12. php生成流水号,生成唯一流水号
  13. ISBN(国际标准书号)的校验
  14. flutter学习笔记之Dart-8 问号、双问号、感叹号的理解
  15. 软件工程和计算机科学考公务员,软件工程可以考公务员吗
  16. 项目中生成requests.txt文件(virtualenv与pipreqs)
  17. latex 参考文献显示问号_终于用回vscode写LaTeX了
  18. javascript英语单词音节拆分_音节拆分与合并
  19. 《战争通论》详细分析世界十大兵书…
  20. 日程表mysql_web编程之日程表模块(PHP+Mysql+Ajax)

热门文章

  1. excel删除重复数据保留一条_VBA利用字典删除重复行,保留唯一值
  2. 有效的数独Python解法
  3. 最长递增子序列的个数Python解法
  4. linux文件系统分隔符,Linux的哲学思想和文件系统
  5. mysql 存储过程 条件_mysql sql存储过程条件定义与处理
  6. % mysql 代表_MySQL中的星号(*)和百分号(%)代表表示什么,MySQL的库名、表名、字段名、字段值是否区分大...
  7. java工具类下载_java文件下载工具类
  8. win7 linux16.04双系统,安装windows7+ubuntu16.04双系统
  9. 嵌入式驱动自学者的亲身感受,有什么建议?
  10. 有一个工程师男(女)朋友是什么样的体验?