【已解决】vs2015下c++对sqlite的操作

本博文源于笔者操作sqlite3,借鉴了很多文章的思路,这里并整理了c++常用的对数据库的操作供大家点赞收藏以后备用。包含了:c++对sqlite3的创建数据库、创建数据表、写入数据表、读取数据表、删除数据表。也包括了最基础的让c++运行sqlite3.内容供读者参考,希望对大家有所帮助。

1、如何让c++运行sqlite3

虽然让c++运行sqlite3不是重点,但这里放个连接供大家参考。
跳转链接

2、创建数据库

void CreateDataBase(const char* dataBaseName) {int result = sqlite3_open_v2(dataBaseName, &sql, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_NOMUTEX | SQLITE_OPEN_SHAREDCACHE, NULL);if (result == SQLITE_OK) {std::cout << "打开数据库连接成功" << std::endl;;}else {std::cout << "打开数据库连接失败" << std::endl;}
}

3、创建数据表

void CreateTable(const char* tableContent) {sqlite3_stmt* stmt = NULL;        //stmt语句句柄int result = sqlite3_prepare_v2(sql, tableContent, -1, &stmt, NULL);if (result == SQLITE_OK) {std::clog << "创建数据表成功" << std::endl;sqlite3_step(stmt);}else {std::clog << "创建数据表失败" << std::endl;}sqlite3_finalize(stmt);
}

写入语句

void InsertValue(const char* sqlContent) {// 表单中插入信息//进行插入前的准备工作——检查语句合法性//-1代表系统会自动计算SQL语句的长度sqlite3_stmt* stmt = NULL;int result = sqlite3_prepare_v2(sql, sqlContent, -1, &stmt, NULL);if (result == SQLITE_OK) {std::clog << "添加数据语句OK" << std::endl;//执行该语句sqlite3_step(stmt);}else {std::clog << "添加数据语句有问题" << std::endl;}//清理语句句柄,准备执行下一个语句sqlite3_finalize(stmt);
}

读取信息


void ReadTable() {// 查询char* errmsg;char** mResult;//结果集int mRow;//行数int mCol;//列数int nResult = sqlite3_get_table(sql, "select * from devices;", &mResult, &mRow, &mCol, &errmsg);int nIndex = mCol;cout << "mRow: " << mRow << endl;cout << "mCol: " << mCol << endl;if (mRow > 0 && mCol > 0){for (int i = 0; i < mRow; i++){for (int j = 0; j < mCol; j++){cout << mResult[j] << ": " << mResult[nIndex] << endl;++nIndex;}cout << endl;}sqlite3_free_table(mResult);}
}

删除数据表

void DelTable(const char* sqlContent) {sqlite3_stmt* stmt = NULL;int result = sqlite3_prepare_v2(sql, sqlContent, -1, &stmt, NULL);if (result == SQLITE_OK) {std::clog << "删除数据完毕OK" << std::endl;sqlite3_step(stmt);}else {std::clog << "删除数据有问题" << std::endl;}
}

完整测试样例

int main() {//创建数据库CreateDataBase();//创建数据表const char *sqlCreateTable = "CREATE TABLE IF NOT EXISTS devices (""deviceid INTEGER PRIMARY KEY,""devMac TEXT,""devSn TEXT,""keySn TEXT,""matNum TEXT,""openId TEXT,""workNum TEXT);";CreateTable(sqlCreateTable);//插入数据const char *sqlInsert = "INSERT INTO devices  VALUES (1, '00:12:31:8f:a7:52','812aab3b5b57cce4','0012110909801968','','64e0886f60b2be8101031868','lc123');";InsertValue(sqlInsert);//读取数据ReadTable();//删除数据//const char* sqlDel = "delete from  devices where deviceid=1";//DelTable(sqlDel);//ReadTable();system("pause");return 0;
}

测试效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/291483.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面向对象编程————接口案例

接口特性 案例 思路&#xff1a; 首先应该建立整体大框架&#xff1a;应该先创建一个学生类&#xff0c;里面标明学生的各项属性&#xff1a;姓名、性别、成绩。要打印全班学生的信息&#xff0c;需要一个班级类&#xff0c;在里面创建Arraylist容器包含全体学生数据。然后在里…

windows下使用gtest

我是在window下使用clion来写c的&#xff0c;最近学习了gtest&#xff0c;中间遇到了一些问题&#xff0c;记录一下。 整体目录 先看一下目录结构 两个测试case&#xff0c;前面就有运行的标志&#xff0c;直接点击就能运行 具体的代码 CMakeLists.txt cmake_minimum_req…

MySQL:通过官方mysql server,搭建绿色版mysql服务器(Windows)

1. 官网下载mysql server 下载mysql server的zip文件&#xff0c;地址&#xff1a; https://downloads.mysql.com/archives/community/ 解压后 2. 初始化数据库 运行cmd&#xff0c; 进入bin目录&#xff0c;运行 mysqld --initialize-insecureinitialize-insecure说明如…

储能安全事频发,汉威科技传感器及综合解决方案助力储能消防建设

近年来&#xff0c;储能赛道狂飙突进&#xff0c;已经成为我国以及美国、日本、澳大利亚、欧洲诸国的新兴产业。《“十四五”国家消防工作规划》特别提到&#xff0c;要积极防范新业态新材料新风险&#xff0c;其中包括新型储能设施。 储能系统是新型电力系统有效的调峰调频、平…

AcWing算法进阶课-1.9.1Dinic/ISAP求最小割

算法进阶课整理 CSDN个人主页&#xff1a;更好的阅读体验 原题链接 题目描述 给定一个包含 n n n 个点 m m m 条边的有向图&#xff0c;并给定每条边的容量&#xff0c;边的容量非负。 图中可能存在重边和自环。求从点 S S S 到点 T T T 的最小割。 输入格式 第一行包…

伪协议和反序列化 [ZJCTF 2019]NiZhuanSiWei

打开题目 代码审计 第一层绕过 if(isset($text)&&(file_get_contents($text,r)"welcome to the zjctf")){ echo "<br><h1>".file_get_contents($text,r)."</h1></br>"; 要求我们get传参的text内容必须为w…

Spring Security:从入门到精通,全方位指南

Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro&#xff0c;它提供了更丰富的功能&#xff0c;社区资源也比Shiro丰富。 一般来说中大型的项目都是使用SpringSecurity 来做安全框架。小项目有Shiro的比较多&#xff0c;因为相比与SpringSe…

淘宝API:连接消费者与商家的桥梁

随着互联网的快速发展&#xff0c;电子商务已成为人们日常生活的重要组成部分。淘宝作为中国最大的电商平台之一&#xff0c;不仅为消费者提供了丰富的商品选择&#xff0c;还为商家提供了广阔的销售渠道。而淘宝API&#xff08;应用程序接口&#xff09;则是连接消费者与商家的…

YashanDB个人版体验总结

前言 YashanDB数据库具有多项功能特性。首先&#xff0c;它是一个分布式数据库&#xff0c;支持水平扩展&#xff0c;能够将数据分散到多个节点上&#xff0c;从而提高系统的可靠性和性能。其次&#xff0c;YashanDB数据库具备高可用性&#xff0c;支持主从复制和自动故障转移…

你以为出现NoClassDefFoundError错误会是什么原因?

你以为出现NoClassDefFoundError错误会是什么原因&#xff1f; 1、概述2、事情经过3、总结 1、概述 大家好&#xff0c;我是欧阳方超&#xff0c;可以关注我的公众号“欧阳方超”&#xff0c;后续内容将在公众号首发。 同样的错误&#xff0c;非一样的解决方式。NoClassDefFou…

2023 英特尔On技术创新大会直播 |AI小模型更有性价比

前言&#xff1a; 今年是引爆AI的一年&#xff0c;从幼儿园的小朋友到80岁的老奶奶都认识AI&#xff0c;享受AI带来的便捷&#xff0c;都在向市场要智能&#xff0c;但AI的快速发展离不开底层硬件设施的革新。 英特尔是全球知名的半导体公司&#xff0c;专注于计算机处理器和芯…

理论篇:什么是NPM以及为什么NPM如此重要

&#x1f4cc; NPM&#xff0c;全称是 Node Package Manager&#xff0c;NodeJS 包管理工具 当我们开始现代化前端项目开发时&#xff0c;总是会被告知需要提前安装NodeJS&#xff0c;而且NodeJS软件包不仅仅会在我们的开发设备上安装NodeJS运行环境&#xff0c;同时会附带NPM工…