c++ 调用 sqlcipher
#include <iostream>
#include <string.h>
#include "sqlite3.h" using namespace std; static int callback(void *notUsed, int argc, char **argv, char **azColName)
{
for (int i = ; i < argc; i++)
cout << azColName[i] << ":" << (argv[i] ? argv[i] : "NULL") << "\t";
cout << endl;
return ;
} void dbTest()
{
#pragma region 打开或创建数据库 /*打开或创建的数据库实例句柄*/
sqlite3 *db = NULL; /*数据库文件的路径及文件名*/
const char* path = "./sqlcipher.db";
/*根据文件路径打开数据库连接。如果数据库不存在,则创建。数据库文件的路径必须以C字符串传入*/
int result = sqlite3_open_v2(path, &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_NOMUTEX | SQLITE_OPEN_SHAREDCACHE, NULL); if (result == SQLITE_OK)
cout << "打开或创建数据库成功" << endl;
else
cout << "打开或创建数据库失败" << endl; sqlite3_close(db); #pragma endregion #pragma region 指定数据库密码 const char* pwd = "abcdefg";
result = sqlite3_open(path, &db); if (result == SQLITE_OK)
cout << "打开数据库成功" << endl;
else
cout << "打开数据库失败" << endl; result = sqlite3_key(db, pwd, strnlen(pwd, ));
cout << "指定数据库密码:" << result << endl; #pragma endregion #pragma region 执行SQL语句 char* errmsg;
result = sqlite3_exec(db, "CREATE TABLE [t1](id integer PRIMARY KEY AUTOINCREMENT UNIQUE, name varchar);", NULL, NULL, &errmsg);
if (result == SQLITE_OK)
{
cout << "SQL 语句执行成功" << endl;
}
else
{
cout << "SQL 语句执行时发生错误:" << sqlite3_errmsg(db) << endl;
} result = sqlite3_exec(db, "INSERT INTO t1(name) VALUES('张三');", NULL, NULL, &errmsg);
if (result == SQLITE_OK)
{
cout << "SQL 语句执行成功" << endl;
}
else
{
cout << "SQL 语句执行时发生错误:" << sqlite3_errmsg(db) << endl;
} result = sqlite3_exec(db, "SELECT * FROM t1;", callback, NULL, &errmsg);
if (result == SQLITE_OK)
{
cout << "SQL 语句执行成功" << endl;
}
else
{
cout << "SQL 语句执行时发生错误:" << sqlite3_errmsg(db) << endl;
} #pragma endregion sqlite3_close(db);
} int main(int argc, char *argv[])
{
dbTest(); char sz[] = "End !";
cout << sz << endl;
return ;
}
c++ 调用 sqlcipher的更多相关文章
- 黑马毕向东Java基础知识总结
Java基础知识总结(超级经典) 转自:百度文库 黑马毕向东JAVA基础总结笔记 侵删! 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部 ...
- 《果壳中的C# C# 5.0 权威指南》 - 学习笔记
<果壳中的C# C# 5.0 权威指南> ========== ========== ==========[作者] (美) Joseph Albahari (美) Ben Albahari ...
- Android数据存储之SQLCipher数据库加密
前言: 最近研究了Android Sqlite数据库(文章地址:Android数据存储之Sqlite的介绍及使用)以及ContentProvider程序间数据共享(Android探索之ContentP ...
- Android数据库安全解决方案,使用SQLCipher进行加解密
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/11952409 我们都知道,Android系统内置了SQLite数据库,并且提供了一 ...
- 【iOS】FMDB/SQLCipher数据库加解密,迁移
2016-04-19更新:本文代码可能有些问题,请移步 http://zhengbomo.github.io/2016-04-18/sqlcipher-start/ 查看 sqlite应用几乎在所有的 ...
- 封装一些数据库SQLCipher的方法(增、删、改、查)
上一篇随笔只是简单的说了一下使用SQLCipher框架,介绍的比较笼统,可能看一遍之后更加蒙圈了,为了更好的使用这个数据库,整理了我在公司项目的需要用的方法,包括创建表,插入数据,更新数据,搜索查询数 ...
- (iOS)sqlcipher和FMDB的使用总结(原创)
写这篇文章的原因是之前接触到了关于sqlite数据库加密的问题,一般数据库加密,无非是数据加密和数据库文件加密,当然数据库文件加密对手机效率可能更高一些. 下面就讲一下,自己对sqlcipher和fm ...
- sqlcipher 数据库解密
使用 sqlcipher.exe 可以在输入密码后,查看加密数据库的内容. 但是要编码查询数据库的内容,还要另寻方法.(相关的工具和库在我的百度网盘中) 使用sqlcipher windows 命令工 ...
- Android数据库安全解决方案,使用SQLCipher
源码:http://files.cnblogs.com/android100/SQLCipherTest.rar 我们都知道,Android系统内置了SQLite数据库,并且提供了一整套的API用于对 ...
随机推荐
- IBM DS5020 管理口密码重置
IBM DS5020 管理口密码重置 使用超级终端进行连接,输入回车,然后Ctrl+Break(有时需要多按几次),屏幕会出现设置波特率的提示: Send for shell access or ba ...
- MYSQL explain详解[转载]
explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 虽然这篇文章我写的很长,但看起来真的不会困啊,真的都是干货啊!!!! 先解析 ...
- TensorRt安装
1.下载 https://developer.nvidia.com/nvidia-tensorrt-5x-download 选择5 GA版本,注意选择与自己CUDA匹配的版本 2.安装 参考:http ...
- Parallel并行循环
Parallel.For(, , new ParallelOptions() { MaxDegreeOfParallelism = 100 },(i, pls) => { ) { pls.Bre ...
- oracle pl/sql 程序设计 历史笔记整理
20131016 周三 oracle pl/sql 程序设计 第2章 创建并运行pl/sql代码 sqlplus yjkhecc/yjkhecc@10.85.23.92:1521/orcl 在java ...
- dijkstra算法之优先队列优化
github地址:https://github.com/muzhailong/dijkstra-PriorityQueue 1.题目 分析与解题思路 dijkstra算法是典型的用来解决单源最短路径的 ...
- 【10】Python urllib、编码解码、requests、多线程、多进程、unittest初探、__file__、jsonpath
1 urllib urllib是一个标准模块,直接import就可以使用 1.1get请求 from urllib.request import urlopen url='http://www.nnz ...
- 装sqlserver2005驱动解决firedac连接sql2000问题
装了sqlserver2005驱动, 系统里装的sqlserver2012也能连上sql2000了. 当然firedac连sql2000也没问题了.设置个ODBCAdvanced为SQL Native ...
- 1.端口被占用问题:Embedded servlet container failed to start. Port 8097 was already in use.
1.端口被占用问题:Embedded servlet container failed to start. Port 8097 was already in use.netstat -anonetst ...
- 【webpack4】webpack4配置需要注意的问题
需要注意的知识: 要全局安装webpack以及webpack cli,否则不能使用webpack指令 npm install webpack -g npm install webpack-cli -g ...