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);
  • 相关阅读:
    (四)STL中的算法
    (三)openssl库实现对称和非对称加密
    (十一)etcd项目
    (十二)插件之dlopen/dlsym/dlclose 加载动态链接库
    (十一)访问权限关键字publi/private/protected
    RESTful架构
    (零)TCP/IP详解综述
    (二)辗转相除法求最大公约数
    (一)简单的TcpServer
    SpringMVC异常处理
  • 原文地址:https://www.cnblogs.com/spadd/p/4435786.html
Copyright © 2011-2022 走看看