db.execsql在java对应_Java SQLiteDatabase.rawExecSQL方法代码示例

import net.sqlcipher.database.SQLiteDatabase; //导入方法依赖的package包/类

/**

* Replaces this database with a version encrypted with the supplied

* passphrase, deleting the original. Do not call this while the database

* is open, which includes during any Room migrations.

*

* The passphrase is untouched in this call. If you are going to turn around

* and use it with SafeHelperFactory.fromUser(), fromUser() will clear the

* passphrase. If not, please set all bytes of the passphrase to 0 or something

* to clear out the passphrase.

*

* @param ctxt a Context

* @param originalFile a File pointing to the database

* @param passphrase the passphrase from the user

* @throws IOException

*/

public static void encrypt(Context ctxt, File originalFile, char[] passphrase)

throws IOException {

SQLiteDatabase.loadLibs(ctxt);

if (originalFile.exists()) {

File newFile=

File.createTempFile("sqlcipherutils", "tmp",

ctxt.getCacheDir());

SQLiteDatabase db=

SQLiteDatabase.openDatabase(originalFile.getAbsolutePath(),

"", null, SQLiteDatabase.OPEN_READWRITE);

db.rawExecSQL("ATTACH DATABASE '"+newFile.getAbsolutePath()+

"' AS encrypted KEY '"+String.valueOf(passphrase)+"'");

db.rawExecSQL("SELECT sqlcipher_export('encrypted')");

db.rawExecSQL("DETACH DATABASE encrypted");

int version=db.getVersion();

db.close();

db=SQLiteDatabase.openDatabase(newFile.getAbsolutePath(), passphrase,

null, SQLiteDatabase.OPEN_READWRITE);

db.setVersion(version);

db.close();

originalFile.delete();

newFile.renameTo(originalFile);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值