本人最近在学习Android程序,用到了SQLite数据库,但是到最后却很纠结地发现android中的SQLite没法添加密码,很坑爹。网上寻找了很多资料,最多说的是用sqlcipher加密,这个方案确实不错,但是接着的问题才是最重要的:网上给出的sqlcipher方案例子都是新建带密码的数据库,然后添加数据,我几十兆的数据总不能逐条写吧?(其实也可以,但是比较懒。)又查了很多资料,发现用到的最多的是sqlcipher的命令模式直接改密码,但是本人初学android,没有看懂(真心希望懂的人教一教),真是搞不明白为什么sqlcipher不做一个改密码的函数!(或者我不知道?)

以上各种感受,现在说说我的方法吧:

直接改密码是不行了,找了一个折中的办法:

1.新建一个代密码的数据库;

2.连接(attach)原数据库;

3.直接拷贝表。

Sqlcipher的具体用法不描述了,和android的Sqlite的函数都是一样的,仅仅是在新建、打开等操作时多了一个密码的参数,不懂的话可以百度搜,以下我只列出了需要用到的关键语句(本文中的所有SQLiteDatabase类都是net.sqlcipher.database.SQLiteDatabase不是android中的SQLiteDatabase)。。

首先新建一个带密码的数据库:

SQLiteDatabase dataTarget =SQLiteDatabase.openOrCreateDatabase([这里填新建加密数据库文件路径], [这里是数据库密码],null);

新数据库连接老数据库:

//链接数据库dataTarget.execSQL("attach '"+[这里填原数据库文件路径]+"' as sourceLib key '';");// sourceLib是老数据库的别名,第二个参数是密码,由于原数据库没有加密所以密码为:’’。

新建拷贝表:

dataTarget.execSQL("select * into[表名] from sourceLib.[表名]");

有几个表执行几次。

需要说明的是,这种方式新建的表没有原表的主键默认值等信息,如果要保留主键默认值等信息用如下方法:

1.新建加密数据库;(同上,略)

2.新建表,同原表结构;

这一步可以用SQLite Expert等软件直接提取到SQL脚本复制到编程语句即可。如下图:

3.链接原数据库;(同上,略)

4.用insert语句拷贝表:

dataTarget.execSQL("insert into[表名] select * from sourceLib.[表名]");

以上即可完成。



用sqlcipher对已有的SQLite数据库加密相关推荐

  1. android sqlite加密数据库,Android Sqlite数据库加密

    Android使用的是开源的SQLite数据库,数据库本身没有加密,加密思路通常有两个: 1. 对几个关键的字段使用加密算法,再存入数据库 2. 对整个数据库进行加密 SQLite数据库加密工具: 收 ...

  2. 利用SQLChiper对Android SQLite数据库加密

    利用SQLChiper对Android SQLite数据库加密 前言: 上篇文章讲了Android studio+SQLCipher加密SQLite数据库的几个坑,跳过这几个坑,那么SQLCipher ...

  3. android sqlite数据库加密,(转)SQLite数据库的加密

    1.创建空的SQLite数据库. //数据库名的后缀你可以直接指定,甚至没有后缀都可以 //方法一:创建一个空sqlite数据库,用IO的方式 FileStream fs = File.Create( ...

  4. SQLITE数据库加密

    关于SQLite SQLite是一个轻量的.跨平台的.开源的数据库引擎,它的在读写效率.消耗总量.延迟时间和整体简单性上具有的优越性,使其成为移动平台数据库的最佳解决方案(如iOS.Android). ...

  5. Sqlite数据库加密方法

    方法一:对sqlite中的数据进行加密 对数据库中插入的字段内容先进行AES.MD5等加密后在插入到数据库中,在使用时先从数据库中取出数据,然后在解密在使用这种方式好是好,但是有些致命的问题不能绕过, ...

  6. android 访问sqlite,android中访问已有的sqlite数据库

    推荐文章 每天进步记录一点点 话说经常性的操作svn出现各种问题,而度娘一直帮倒忙,是不是很手足无措. 有时问题还是要记录下来的.说不定还会有惊喜. 昨天遇到个问题,搜索了一下,发现第一条就是自己写的 ...

  7. Android程序中读取使用已有的SQLite数据库

    方法一: 先在 Manifest 里添加权限: [java] view plaincopy print? <span style="font-size:12px;">& ...

  8. Android导入已有Sqlite数据库

    在res文件夹下创建文件夹raw,在raw中放入要导入的sqlite数据库 创建java类命名为DBManager,编写以下代码: public class DBManager {private fi ...

  9. 在C#中,如何连接已加密的Sqlite数据库

    对数据加密分两种,一种是对数据库本身进行加密,另一种是对数据表中的数据进行加密, 如果SQLite数据库加密,我这里使用的一个管理工具叫SQLiteDeveloper,如下就可以加密数据库 , 如果在 ...

最新文章

  1. PyCharm导入numpy包遇到的问题
  2. android怎么将editext的文本,android – 如何将文本添加到editext
  3. Spring-boot(一)
  4. Ubuntu 使用 Smina 对接教程
  5. [NHibernate]使用AttributeNHibernate.Mapping.Attributes
  6. POJ2033 LA3078 HDU1508 ZOJ2202 Alphacode【DFS+DP】
  7. 分类问题损失函数的信息论解释
  8. 推荐系统实践---第六章:利用社交网络数据
  9. 【模拟电路知识】运算放大器没有反馈电路——做电压比较器应用
  10. P站-画师通图片如何保存为原图
  11. Python 实现读取文本内容、文件重命名、替换文本内容
  12. ubuntu18.04 快速搭建 Hyperledger Fabric超级账本框架
  13. RH850从0搭建Autosar开发环境【1】- 如何创建Davinci Configurator配置工程
  14. 网站架构优化性能概念
  15. 51cto的请看过来
  16. 云商互惠商城源码/大型买返商城源码,返利商城源码
  17. 宝塔linux面板安装使用教程汇总贴(常见问题)
  18. 与古人有关......
  19. USB键盘在DOS下无法用,在BIOS和WIN中正常,奇怪情况,原来是PS2接口有问题
  20. 逻辑思维训练-流程图

热门文章

  1. 小米10开始抓取日志怎么关闭_除了*#*#6485#*#*,小米手机还有这些神秘暗号
  2. 数据库的列类型与字段属性
  3. 超好用的pdf编辑+pdf转word工具 – Adobe Acrobat Pro DC下载
  4. Java控制台游戏~600行代码实现打怪小游戏
  5. linux chown sh,chown命令示例
  6. 使用exceljs读取和导出Excel并支持图片导出
  7. 【总结】C#上传excel文件到Sql server数据库
  8. 解决Win10图片打开方式没有“Windows照片查看器”问题
  9. FPGA串口收发(四):接收数据并转发,间隔时间发送
  10. PTA - 二分查找法