WCDB 是腾讯出品的一个高效、完整、易用的移动数据库框架,基于SQLCipher,支持iOS, macOS和Android,还内建了Repair Kit用于修复损坏的数据库以及内置的防SQL注入。

项目地址:https://github.com/Tencent/wcdb

使用方法:

dependencies {    compile 'com.tencent.wcdb:wcdb-android:1.0.2'    // Replace "1.0.2" to any available version.}

和在 android 上使用 SQLite 一样,先创建一个 WcdbHelper 继承 SQLiteOpenHelper 类,注意包名这里是 com.tencent.wcdb.database 。

class WcdbHelper extends SQLiteOpenHelper{    public WcdbHelper(Context context, String name, byte[] password, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) {        super(context, name, password, factory, version, errorHandler);    }    @Override    public void onCreate(SQLiteDatabase db) {    }    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {    }}

由于 wcdb 是基于 SQLCipher,所以我们可以为数据库设置一个密码,我们在构造函数里指定密码即可,wcdb 允许 byte[] 作为密码, SQLCipher 使用 String 作为密码。

File cdb = new File(getExternalFilesDir("db"), "hello.wcdb");WcdbHelper wcdbHelper = new WcdbHelper(        getApplicationContext(),        cdb.getAbsolutePath(),        "password".getBytes(), null, 1, null);

接下来在这张表里创建一条数据:

String sql = "INSERT INTO \"main\".\"address_book\" (\"name\", \"age\", \"address\") VALUES (?, ?, ?)";wcdbHelper.getWritableDatabase().execSQL(sql, new String[]{"dummy", "28", "Hubei wuhan"});

这样,在 hello.wcdb 这个数据库中就存在了一条数据,当我们像打开 sqlite 数据库时打开这个 wcdb 数据库时候,提示错误,这是正常的,因为它被加密了,这样无论手机是否 root 或是我们把数据库存放在外置存储中,对于我们 app 的敏感数据来说,他们依然是安全的。

尝试打开 wcdb 数据库文件

总得来说,如果会使用 sqlite 的话,那么 wcdb 也不在话下,并且迁移成本也很小。唯一的不足是,wcdb 官方提到的 winq 查询在 android 上并不支持,但是官方也说在今后会提供其他方式的 orm 以方便数据库操作。

对于习惯了像 .NET 上的 EF 框架的人来说说,在 app 或程序中继续写 sql 语句让我回到了刀耕火种的时代,在 wcdb 之前我接触到的另一个数据库是 .NET 平台上的 LiteDB,虽然它不出名,但是不用让我写 sql ,虽然它本就是 NoSQL 数据库 ,哈!

更多相关文章

  1. 初学了解MVC在android中的应用
  2. Android(安卓)数据库一次创建多个表
  3. Android(安卓)md5加密与php md5加密一致详解
  4. Android(安卓)Studio 1.0 安装遇到问题总结
  5. windows 7配置android开发环境
  6. 【android】数据库升级完整解决方案
  7. Eclipse 默认打开Android(安卓)xml 布局视图的问题
  8. SQLite数据库相关(三) SQLiteOpenHelper类
  9. Android项目开发技术总结

随机推荐

  1. android 底部菜单写法之FragmentTabHost
  2. android webview 设置
  3. AndroidStudio打包apk出现的问题 `Error:
  4. react-native开发实例之替换默认logo——
  5. Android(安卓)Studio如何引用外部Library
  6. Android(安卓)JNI和NDK学习(3)--Android.
  7. AndroidStudio用gradle编译中文乱码
  8. 播放音乐ProgressBar进度条
  9. 举例说明android中ProgressBar的用法
  10. android 启动时会多显示一个闪现屏