【已解决】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.mzph.cn/news/237320.shtml

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

相关文章

手机无人直播的兴起

近年来&#xff0c;随着科技的不断进步和智能手机的普及&#xff0c;手机无人直播成为了一种新兴的传媒方式。手持手机&#xff0c;不经过镜头操作人员的干预&#xff0c;通过直播平台实时分享自己的所见所闻&#xff0c;成为了越来越多人的选择。手机无人直播的盛行离不开以下…

[node]Node.js 中REPL简单介绍

[node]Node.js 中REPL简单介绍 什么是REPL为什么使用REPL如何使用REPL 命令REPL模式node的全局内容展示node全局所有模块查看全局模块具体内容其它命令 实践 什么是REPL Node.js REPL(Read Eval Print Loop:交互式解释器) 表示电脑的环境&#xff0c;类似 Windows 系统的终端或…

Hardhat环境搭建(六)---无需翻墙

Hardhat环境搭建 官方地址 node环境 npm环境 git环境 安装hardhat npm init npminit是什么 在node开发中使用npm init会生成一个pakeage.json文件&#xff0c;这个文件主要是用来记录这个项目的详细信息的&#xff0c;它会将我们在项目开发中所要用到的包&#xff0c;以…

Mac查询本机ip地址

Mac系统版本和网络配置不同&#xff0c;可能会有一些细微差别。 一、 使用系统偏好设置 1、点击屏幕左上角的Apple图标&#xff0c;选择“系统偏好设置”。 2、点击“网络”。 3、 在左侧选择当前连接的网络&#xff08;如Wi-Fi或以太网&#xff09;&#xff0c;在右侧界面&a…

达梦到达梦的外部链接dblink(DM-DM DBLINK)

一. 使用场景&#xff1a; 部链接对象&#xff08;LINK&#xff09;是 DM 中的一种特殊的数据库实体对象&#xff0c;它记录了远程数据库的连接和路径信息&#xff0c;用于建立与远程数据的联系。通过多台数据库主库间的相互通讯&#xff0c;用户可以透明地操作远程数据库的数…

Java Web3J :使用web3j调用自己的智能合约的方法(教程)

代码世界有很多令人大呼小叫的技巧!有的代码像魔术师一样巧妙地隐藏了自己,有的像魔法师一样让你眼花缭乱,还有的像瑜伽大师一样灵活自如。它们让我们惊叹不已,让我们觉得自己仿佛置身于编码的魔幻世界。快来分享你见过哪些令你膛目结舌的代码技巧吧! 目录 web3j调用智能合…

前端开发新趋势:Web3 与虚拟现实的技术融合

在当今互联网技术日新月异的时代&#xff0c;Web技术也在不断地发展和变革。从前端开发的角度来看&#xff0c;新技术的涌现和旧技术的迭代让前端开发者们面临着前所未有的挑战和机遇。Web3 与虚拟现实&#xff08;VR&#xff09;的技术融合&#xff0c;正是当前前端开发领域的…

​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化

2022年亚马逊云科技re:Invent盛会于近日在拉斯维加斯成功召开&#xff0c;吸引了众多业界精英和创新者。亚马逊云科技边缘服务副总裁Jan Hofmeyr在演讲中分享了关于亚马逊云科技海外服务器边缘计算的最新发展和创新成果&#xff0c;引发与会者热烈关注。 re:Invent的核心主题是…

九、W5100S/W5500+RP2040之MicroPython开发<HTTPOneNET示例>

文章目录 1. 前言2. 平台操作流程2.1 创建设备2.2 创建数据流模板 3. WIZnet以太网芯片4. 示例讲解以及使用4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 烧录验证 5. 注意事项6. 相关链接 1. 前言 在这个智能硬件和物联网时代&#xff0c;MicroPython和树莓派PICO正…

Kubernetes 的用法和解析 -- 7

k8s之共享存储pv&pvc 1 存储资源管理 在基于k8s容器云平台上&#xff0c;对存储资源的使用需求通常包括以下几方面&#xff1a; 1.应用配置文件、密钥的管理&#xff1b; 2.应用的数据持久化存储&#xff1b; 3.在不同的应用间共享数据存储&#xff1b; k8s的Volume抽象概…

Curl多线程https访问,崩溃问题修复

Curl: &#xfffd;&#xfffd;: SSL and multithread crash on windows, how to use mutex on windows? SSL and multithread crash on windows, how to use mutex on windows? From: mao mao <lmjrd_at_hotmail.com> Date: Fri, 25 Nov 2016 09:50:48 0000 Thank…

昨天下午学习的是mysql-约束条件 数据类型

常见的数据类型 整数 浮点型 日期 字符串文本类型 比如id后面要是int类型的 手机号就得是bigint 或 varchar 主键 primary key 自增 auto_increment 非空notnull 唯一约束 unique 参照refernces 用法 create database System; use System; create table stude…

【昆明*线上同步】最新ChatGPT/GPT4科研实践应用与AI绘图技术及论文高效写作

详情点击查看福利&#xff1a;【昆明*线上同步】最新ChatGPT/GPT4科研实践应用与AI绘图技术及论文高效写作 目标&#xff1a; 1、熟练掌握ChatGPT提示词技巧及各种应用方法&#xff0c;并成为工作中的助手。 2、通过案例掌握ChatGPT撰写、修改论文及工作报告&#xff0c;提供…

AI Native工程化:百度App AI互动技术实践

作者 | GodStart 导读 随着AI浪潮的兴起&#xff0c;越来越多的应用都在利用大模型重构业务形态&#xff0c;在设计和优化Prompt的过程中&#xff0c;我们发现整个Prompt测评和优化周期非常长&#xff0c;因此&#xff0c;我们提出了一种Prompt生成、评估与迭代的一体化解决方案…

java 非常好用的一个缓存(Google Guava的Cache)

基本每个web项目都少不了缓存&#xff0c;通常很时候都会选择redis作缓存&#xff0c;或者自己用map轻松实现&#xff0c;但上面这两种缓存有时满足不了需求&#xff0c;有时觉得redis作缓存有点重&#xff0c;而map手功实现又太轻或功能不足时&#xff08;缓存时过期实现&…

NB-IOT、4G-LTE信号优劣判定参考指标

名词释意 &#xff08;1&#xff09;RSRP&#xff1a;信号接收功率&#xff0c;反映当前路径信道损耗程度&#xff0c;主要作为小区覆盖的测量和小区重选重要依据. &#xff08;2&#xff09;RSRQ&#xff1a;信号接收质量&#xff0c;反映当前路径网络负荷及干扰变化点&#x…

【XML】TinyXML 详解

1、简介 优点&#xff1a; TinyXML 是一个简单、小型的 C XML 解析器&#xff0c;可以轻松集成到项目中。 TinyXML 解析 XML 文档&#xff0c;并根据该文档构建可读取、修改和保存的文档对象模型 (DOM) TinyXML 是在 ZLib 许可下发布的&#xff0c;因此可以在开源或商业代码中…

【Flink-Kafka-To-ClickHouse】使用 Flink 实现 Kafka 数据写入 ClickHouse

【Flink-Kafka-To-ClickHouse】使用 Flink 实现 Kafka 数据写入 ClickHouse 1&#xff09;导入相关依赖2&#xff09;代码实现2.1.resources2.1.1.appconfig.yml2.1.2.log4j.properties2.1.3.log4j2.xml2.1.4.flink_backup_local.yml 2.2.utils2.2.1.DBConn2.2.2.CommonUtils2.…

zynqmp Linux + 裸机 (A53-0 Linux,A53-1 2 3 裸机大数据量实时处理,R5-0 协议处理,R5-1 屏幕显示逻辑等)填坑笔记

fpga 和arm 采用预留内存的方式&#xff0c;采用neon 协处理器只能做到 250M/S 的速度&#xff0c;预留内存采用mmap的方式&#xff0c;当读取内存页的时候采用缺页中断的方式&#xff0c;导致速度拖沓而且预留内存没有进行Linux系统的内存管理&#xff08;在系统内 memcpy的速…

使用代理服务器和Beautiful Soup爬取亚马逊

概述 Beautiful Soup 是一个用于解析 HTML 和 XML 文档的 Python 库&#xff0c;它能够从网页中提取数据&#xff0c;并提供了一些简单的方法来浏览文档树、搜索特定元素以及修改文档的内容。在本文中&#xff0c;我们将介绍如何使用代理服务器和Beautiful Soup库来爬取亚马逊…