zoukankan      html  css  js  c++  java
  • android把数据库伪装成so文件

    经常我们需要使用一些事先做好内容的数据库,比如字典等, 这就要加载已有的数据库文件,通常把它们放在assets 或者raw中,在程序运行时copy到程序内部空间,

    但是这样有个缺点,当文件较大时会占用较长的时间,用户难免会有点小着急。

    我们可以这样HACK来把copy的环节省去:

    1 把数据库文件(如MYDB.db) 放到PROJECT/libs/armeabi/ 改名为libMYDB.db.so(注意前面必需加”lib")。

    2 用这样的方式打开:

    DATABASE_PATH = "/data/data/" + packageName + "/lib/";
            
    SQLiteDatabase db = SQLiteDatabase.openDatabase(DATABASE_PATH + libMYDB.db.so, null, SQLiteDatabase.OPEN_READONLY | SQLiteDatabase.NO_LOCALIZED_COLLATORS);
          

    ----------------------------------------------------

    // 注意路径
        private String DATABASE_PATH = "/data/data/" + "com.cjoan.www.xiaohua" + "/lib/";
        private SQLiteDatabase stuDb;
    // 数据库加载
            stuDb = SQLiteDatabase.openDatabase(DATABASE_PATH + "libxiaohua.db.so", null,
                    SQLiteDatabase.OPEN_READONLY | SQLiteDatabase.NO_LOCALIZED_COLLATORS);
    
    
            Cursor rawQuery = stuDb.rawQuery("select * from article where id=?", new String[] { "1" });
            System.out.println(rawQuery.moveToFirst());
            if (rawQuery.moveToFirst())
                String title = rawQuery.getString(1);
  • 相关阅读:
    python 前置程序窗口,还原最小化的窗口
    GreenDao官方文档翻译(上)
    Android 使用Instrumentation进行界面的单元测试
    Android:View中的performClick()触发条件
    Java 单元测试(Junit)
    再看薄荷
    单例模式-Singleton
    Java 如何防止线程意外中止
    Java Error和Exception区别
    linux的进程1:rootfs与linuxrc
  • 原文地址:https://www.cnblogs.com/spadd/p/4435786.html
Copyright © 2011-2022 走看看