#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 ;
}

最新文章

  1. WPF整理-使用ResourceDictionary管理Logical Resources
  2. asp.net MVC中获取当前URL/Controller/Action
  3. 内核函数KiFastCallEntry
  4. 使用NSURLSession
  5. C# Keynote
  6. weex-toolkit打包
  7. CodeForces 595A
  8. Storyboard中使用UIscrollView添加约束的开发总结
  9. 【SICP读书笔记(五)】练习2.32 --- 递归求集合子集
  10. uva242,Stamps and Envelope Size
  11. ExpandableListView的完美实现,JSON数据源,右边自定义图片
  12. [转载]mysql中实现行号,oracle中的rowid
  13. Codeforces Round #382 (div2)
  14. PAT L2-016 愿天下有情人都是失散多年的兄妹
  15. qt 操作注册表,设置ie代理
  16. Scrum 冲刺博客集合
  17. 关于python访问字典的方法
  18. Codeforces 260B - Ancient Prophesy
  19. linux第五周
  20. 9.深入理解AbstractQueuedSynchronizer(AQS)

热门文章

  1. regsvr32 驱动
  2. 第02课:启动GDB调试
  3. ZROI 19.08.09模拟赛
  4. npm 安装时 --save --dev 和 --save 区别
  5. Python:日期表达的转换(day of year &amp; year month day)
  6. 【NOIP2014模拟11.3】噪音
  7. jvm——CMS 垃圾回收器(未完)
  8. 【leetcode】1229.Meeting Scheduler
  9. Vue-Router的简单使用
  10. js-展开评论与隐藏评论