c++ 调用 sqlite
#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的更多相关文章
- RT/Metro商店应用如何调用SQLite数据库
RT/Metro商店应用如何调用SQLite数据库 使用前,要安装:SQLite for Windows Runtime (Windows 8.1)(一个VS插件).还有Visual C++ Runt ...
- C#调用SQLite报错:无法加载 DLL“SQLite.Interop.dll”: 找不到指定的模块
C#调用SQLite数据库,有些情况下会报以下这个错误: 无法加载 DLL“SQLite.Interop.dll”: 找不到指定的模块 实际上程序目录中是存在SQLite.Interop.dll这个文 ...
- 关于.NET C#调用Sqlite的总结二
关于.NET C#调用Sqlite的总结一 在上一篇中我一直疑惑为什么我在使用多层架构进行开发时总是会报些莫名的错误,难道要使用Sqlite就不能分层吗?只能将UI.业务逻辑.数据访问统统都要写在一层 ...
- 关于.NET C#调用Sqlite的总结一
--前记 由于自己的密码太多又不容易记住,经常性的会忘记.所以想找个管理软件管理下,可用网上下载的担心不安全.于是自己开始动手写个属于自己的密码管理软件. 因为自己一直做的是WEB开发,对WPF懂的不 ...
- 【转】Phonegap离线调用SQLite数据库文件
按:不可多得的好文章,转过来以免源丢失 文章来源:http://liuwei.co/index.php/default/The-quickest-way-to-execute-many-sql-for ...
- Android调用Sqlite数据库时自动生成db-journal文件的原因
数据库为了更好实现数据的安全性,一半都会有一个Log文件方便数据库出现意外时进行恢复操作等.Sqlite虽然是一个单文件数据库,但麻雀虽小五脏俱全,它也会有相应的安全机制存在 这个journal文件便 ...
- 【转】Android调用Sqlite数据库时自动生成db-journal文件的原因
数据库为了更好实现数据的安全性,一半都会有一个Log文件方便数据库出现意外时进行恢复操作等.Sqlite虽然是一个单文件数据库,但麻雀虽小五脏俱全,它也会有相应的安全机制存在 这个journal文件便 ...
- C#调用SQlite常见问题汇总
最近在做SQLite开发,开发环境是VS2010+ SQLite Ado.Net data Provider.这套Data Provider程序是基于System.Data.SQLite 1.0.66 ...
- python调用sqlite
参考资料:https://www.liaoxuefeng.com/wiki/1016959663602400/1017801751919456 https://www.cnblogs.com/lia ...
随机推荐
- centos7下通过LVS的DR模式实现负载均衡访问
一.两台服务器作为real server ,一台作为director director:172.28.18.69 vip:172.28.18.70 real server1:172.28.18.71 ...
- 数据可视化之颜色,线型,maker
https://blog.csdn.net/m0_37362454/article/details/82791527 https://blog.csdn.net/qiu931110/article/d ...
- tensorflow中张量_常量_变量_占位符
1.tensor 在tensorflow中,数据是被封装在tensor对象中的.tensor是张量的意思,即包含从0到任意维度的张量.常数是0维度的张量,向量是1维度的张量,矩阵是二维度的张量,以及还 ...
- AUC计算方法
本质是ROC曲线下的面积,ROC曲线x轴是误判率/误报率(false positive rate),y轴是准确率/命中率(true positive rate). AUC是ROC曲线与横轴所围的面积. ...
- 火车采集用到的access查询命令小结
#For zencart #图片网址路径替换 UPDATE Content SET v_products_image=replace(v_products_image, '<img src=&q ...
- ArrayList与LinkedList的区别
两者区别大致分为以下几点: 1.ArrayList采用的是采用的是数组形式保存数据,这种方式将对象放在连续的位置中(线性存储):LinkedList采用的将对象放在独立的空间中,每个空间还保留下一个节 ...
- linux常用基本命令不全
pwd 显示当前目录 ls -lh 显示文件列表,h表示会显示文件的大小 mkdir zhu 创建文件夹zhu rmdir zhu 移除文件夹zhu如果abc中含有其他文件,则不能删除 rm -r ...
- CodeForces-916B-Jamie and Binary Sequence(changed after round)(构造)
链接: https://vjudge.net/problem/CodeForces-916B 题意: Jamie is preparing a Codeforces round. He has got ...
- jvm——metaspace代替永久代
https://mp.weixin.qq.com/s?__biz=MzIzNjI1ODc2OA==&mid=2650886860&idx=1&sn=f8bc6ab03d7a07 ...
- Java的格式化输出
在java中除了有System.out.println();和System.out.print();之外还有一种格式化的输出,用来限制宽度,保留小数点后的位数,还有对齐方式. 代码: package ...