#include <iostream>
#include "sqlite3.h" using namespace std; 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; #pragma endregion #pragma region 创建数据库表 const char *sqlCreateTable = "CREATE TABLE [t1](id integer PRIMARY KEY AUTOINCREMENT UNIQUE, name varchar);";
sqlite3_stmt *stmtCreateTable = NULL; /*检查语句合法性,-1代表系统会自动计算SQL语句的长度*/
result = sqlite3_prepare_v2(db, sqlCreateTable, -, &stmtCreateTable, NULL); if (result == SQLITE_OK)
{
/*执行该SQL语句*/
sqlite3_step(stmtCreateTable);
cout << "CREATE TABLE 语句执行成功" << endl;
}
else
{
cout << "CREATE TABLE 语句语法不正确:" << sqlite3_errmsg(db) << endl;
} sqlite3_finalize(stmtCreateTable); #pragma endregion #pragma region 向数据库中插入数据 const char *sqlInsert = "INSERT INTO t1(name) VALUES('张三'); ";
sqlite3_stmt *stmtInsert = NULL; /*检查语句合法性,-1代表系统会自动计算SQL语句的长度*/
result = sqlite3_prepare_v2(db, sqlInsert, -, &stmtInsert, NULL); if (result == SQLITE_OK)
{
/*执行该SQL语句*/
sqlite3_step(stmtInsert);
cout << "INSERT 语句执行成功" << endl;
}
else
{
cout << "INSERT 语句语法不正确:" << sqlite3_errmsg(db) << endl;
} sqlite3_finalize(stmtInsert); #pragma endregion #pragma region 从数据库中查询数据 const char *sqlQuery = "SELECT * FROM t1;";
sqlite3_stmt *stmtQuery = NULL; /*检查语句合法性,-1代表系统会自动计算SQL语句的长度*/
result = sqlite3_prepare_v2(db, sqlQuery, -, &stmtQuery, NULL);
if (result == SQLITE_OK)
{
/*执行该SQL语句*/
while (sqlite3_step(stmtQuery) == SQLITE_ROW)
{
// 取出第0列字段的值
int id = sqlite3_column_int(stmtQuery, ); // 取出第1列字段的值
const unsigned char *name = sqlite3_column_text(stmtQuery, ); //输出相关查询的数据
cout << "id:" << id << ", name: " << name << endl;
}
}
else
{
cout << "SELECT 语句语法不正确:" << sqlite3_errmsg(db) << endl;
} sqlite3_finalize(stmtQuery); #pragma endregion sqlite3_close(db);
} int main(int argc, char *argv[])
{
dbTest(); char sz[] = "End !";
cout << sz << endl;
return ;
}

c++ 调用 sqlite的更多相关文章

  1. RT/Metro商店应用如何调用SQLite数据库

    RT/Metro商店应用如何调用SQLite数据库 使用前,要安装:SQLite for Windows Runtime (Windows 8.1)(一个VS插件).还有Visual C++ Runt ...

  2. C#调用SQLite报错:无法加载 DLL“SQLite.Interop.dll”: 找不到指定的模块

    C#调用SQLite数据库,有些情况下会报以下这个错误: 无法加载 DLL“SQLite.Interop.dll”: 找不到指定的模块 实际上程序目录中是存在SQLite.Interop.dll这个文 ...

  3. 关于.NET C#调用Sqlite的总结二

    关于.NET C#调用Sqlite的总结一 在上一篇中我一直疑惑为什么我在使用多层架构进行开发时总是会报些莫名的错误,难道要使用Sqlite就不能分层吗?只能将UI.业务逻辑.数据访问统统都要写在一层 ...

  4. 关于.NET C#调用Sqlite的总结一

    --前记 由于自己的密码太多又不容易记住,经常性的会忘记.所以想找个管理软件管理下,可用网上下载的担心不安全.于是自己开始动手写个属于自己的密码管理软件. 因为自己一直做的是WEB开发,对WPF懂的不 ...

  5. 【转】Phonegap离线调用SQLite数据库文件

    按:不可多得的好文章,转过来以免源丢失 文章来源:http://liuwei.co/index.php/default/The-quickest-way-to-execute-many-sql-for ...

  6. Android调用Sqlite数据库时自动生成db-journal文件的原因

    数据库为了更好实现数据的安全性,一半都会有一个Log文件方便数据库出现意外时进行恢复操作等.Sqlite虽然是一个单文件数据库,但麻雀虽小五脏俱全,它也会有相应的安全机制存在 这个journal文件便 ...

  7. 【转】Android调用Sqlite数据库时自动生成db-journal文件的原因

    数据库为了更好实现数据的安全性,一半都会有一个Log文件方便数据库出现意外时进行恢复操作等.Sqlite虽然是一个单文件数据库,但麻雀虽小五脏俱全,它也会有相应的安全机制存在 这个journal文件便 ...

  8. C#调用SQlite常见问题汇总

    最近在做SQLite开发,开发环境是VS2010+ SQLite Ado.Net data Provider.这套Data Provider程序是基于System.Data.SQLite 1.0.66 ...

  9. python调用sqlite

    参考资料:https://www.liaoxuefeng.com/wiki/1016959663602400/1017801751919456  https://www.cnblogs.com/lia ...

随机推荐

  1. centos7部署nagios(二)

    一.Nagios简介 分类: 监控 undefined Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows.Linux和Unix的主机状态,交换机路由器等网络设置,打印机等.在系 ...

  2. Vue基础第四章 - v-bind指令

    1.v-bind指令介绍 在前端开发过程中最常做的事莫过于class类名的绑定与style内联样式的修改,Vue中使用v-bind指令来实现这两个需求,在第二章中给出过简单的示例,下面我们来看一下v- ...

  3. ARM仿真器之驱动黄色惊叹号

    JLink CDC UART PORT 黄色惊叹号 Windows 无法验证此设备所需的驱动程序的数字签名.某软件或硬件最近有所更改,可能安装了签名错误或损毁的文件,或者安装的文件可能是来路不明的恶意 ...

  4. CentOS 7添加开机启动服务脚本

    一.添加开机自启服务 在CentOS 7中添加开机自启服务非常方便,只需要两条命令(以Jenkins为例): systemctl enable jenkins.service #设置jenkins服务 ...

  5. linux shell getopt

    linux shell命令行选项与参数用法详解--getopts.getopt https://www.jianshu.com/p/6393259f0a13

  6. canvas实现圆角、圆框图片

    参考资料: http://www.zhangxinxu.com/study/201406/image-border-radius-canvas.html https://www.jianshu.com ...

  7. centos安装gitlab成果

    centos安装gitlab成果 开始之前 在开始之前请先查看官方的刚需文档: https://github.com/gitlabhq/gitlabhq/blob/master/doc/install ...

  8. java实现网页验证码功能_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 本文实例为大家分享了java网页验证码的实现代码,供大家参考,具体内容如下 Servlet: package cn.bd ...

  9. 记录下:nth-child在table中遇到的问题~(已解决)

    首先做了一个表格,如下: <!DOCTYPE html> <html> <head> <title></title> <style t ...

  10. UVa 1343 The Rotation Game (状态空间搜索 && IDA*)

    题意:有个#字型的棋盘,2行2列,一共24个格. 如图:每个格子是1或2或3,一共8个1,8个2,8个3. 有A~H一共8种合法操作,比如A代表把A这一列向上移动一个,最上面的格会补到最下面. 求:使 ...