Clion创建项目sqlite数据库

news/2025/3/10 21:06:09/文章来源:https://www.cnblogs.com/DQ-MINE/p/18632350

1.创建工程并运行

(1)新建——project,选择工程文件夹,创建工程

image-20241226104938570

(2)进入界面,等待项目启动,显示main.cpp主文件

image-20241226105011680

(3)配置编译环境

默认生成了main.cpp文件,但是我们不能运行。我们缺少编译环境,点击Setting打开设置,搜索工具链,发现Clion提供的编译环境有几种MinGW,CygWin,Visual studio等。我此处选择的时MinGW,因为我的安装了MinGW,默认选择了MinGW,如果你没有下载的话,后面的位置原先有个download,点击就可以下载了。安装好之后,然后再Environment右侧选择mingw-w64的位置即可。

image-20241226105450116

(4)运行main.cpp文件即可

image-20241226105043555

2.连接Sqlite数据库

(1)首先前往SQLite官网下载sqlite3所需文件 SQLite Download Page

image-20241226112441040

(2)解压文件,将其中的sqlite3.c和sqlite3.h拷贝到你对应的文件工程中

image-20241226110140287

(3)修改CMakeLists.txt文件,添加编译选项及连接文件

image-20241226111546797

cmake_minimum_required(VERSION 3.28)
project(MyDemo)set(CMAKE_CXX_STANDARD 17)add_executable(MyDemo main.cpp sqlite3.c)# 指定包含目录
target_include_directories(MyDemo PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
(4)创建Sqlite数据库

image-20241226110557142

(5)使用Navicate监视刚才创建的Sqlite数据库

image-20241226110929849

(6)编写代码:数据库连接、表创建、数据表读写
#include <iostream>
#include <sqlite3.h>// 回调函数用于处理查询结果
static int callback(void* NotUsed, int argc, char** argv, char** azColName) {for (int i = 0; i < argc; i++) {std::cout << azColName[i] << ": " << (argv[i] ? argv[i] : "NULL") << std::endl;}std::cout << std::endl;return 0;
}int main() {sqlite3* DB;char* errorMessage = 0;int exit = 0;// 打开或创建数据库文件exit = sqlite3_open("D:/WorkOther/MyDemo/test.db", &DB);// 检查是否成功打开数据库if (exit) {std::cerr << "Error open DB: " << sqlite3_errmsg(DB) << std::endl;return -1;} else {std::cout << "Opened Database Successfully!" << std::endl;}// SQL语句:创建表const char* sql_create ="CREATE TABLE IF NOT EXISTS COMPANY(""ID INT PRIMARY KEY NOT NULL,""NAME TEXT NOT NULL,""AGE INT NOT NULL,""ADDRESS CHAR(50),""SALARY REAL);";// 执行SQL语句exit = sqlite3_exec(DB, sql_create, 0, 0, &errorMessage);if (exit != SQLITE_OK) {std::cerr << "Error CREATE TABLE: " << errorMessage << std::endl;sqlite3_free(errorMessage);} else {std::cout << "Table created successfully" << std::endl;}// 插入数据到表中const char* sql_insert ="INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY) ""VALUES (1, 'Paul', 32, 'California', 20000.00 ); ""INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY) ""VALUES (2, 'Allen', 25, 'Texas', 15000.00 ); ""INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY) ""VALUES (3, 'Teddy', 23, 'Norway', 20000.00 ); ""INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY) ""VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 ); ";// 执行SQL语句exit = sqlite3_exec(DB, sql_insert, 0, 0, &errorMessage);if (exit != SQLITE_OK) {std::cerr << "Error INSERT: " << errorMessage << std::endl;sqlite3_free(errorMessage);} else {std::cout << "Records created successfully" << std::endl;}// 查询表中的数据const char* sql_select = "SELECT * FROM COMPANY";exit = sqlite3_exec(DB, sql_select, callback, 0, &errorMessage);if (exit != SQLITE_OK) {std::cerr << "Error SELECT: " << errorMessage << std::endl;sqlite3_free(errorMessage);} else {std::cout << "Operation done successfully" << std::endl;}// 关闭数据库连接sqlite3_close(DB);return 0;
}

image-20241226111357560

(7)数据库查询

image-20241226111627794

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

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

相关文章

营销相关笔记2:电力营销的业务办理和计量计费

电力营销的业务办理和计量计费 转:电力知识图谱:电力营销(下) - 知乎 一.业务办理 电力营销是和客户打交道的最前线,两大业务:一是市场销售,二是客户需求受理和交付,即业务办理。在一些市场化主导的售电公司里,市场部和营销部可能会分开。但在电网公司,都是统一的营销…

FMC子卡设计原理图:FMC209-基于FMC的4路125MAD输入、2路1GDA输出子卡 中低频信号采集

一、板卡概述本子卡基于FMC连接器实现4路125M采样率AD输出,两路1G采样率DA输出子卡,板卡默认由FMC连接器+12V供电,支持外参考时钟,外输入时钟,外触发。 二、性能指标三、应用领域 中低频信号采集

【安全就业】2024年网络安全技术技能人才职业能力图谱+电子数据取证

电子数据取证,是指利用科学和法律方法对电子设备中的数据进行搜集、分析、保存和报告的过程,以确保这些信息在法律程序中能够作为线索或证据使用。电子数据取证工作,一般需要取证人员具备电子数据提取、电子数据恢复、数据库系统取证、电子数据治理、程序功能分析、现场勘查…

HuntBack(反击狩猎):用于攻防演练中,防守方对恶意ip进行web指纹扫描与识别

#溯源 #攻防演练 HuntBack(反击狩猎),用于攻防演练中,防守方对恶意ip进行web指纹扫描与识别 应用场景 在蓝队职守中,安全设备爆出恶意攻击ip地址,如果对方使用的是自己的服务器,并且搭建了一些安全业务,可使用本工具对目前已知工具进行探测。 功能 1.红队指纹识别 2.ipwh…

代码随想录——贪心23监控二叉树

思路 这道题目首先要想,如何放置,才能让摄像头最小的呢? 从题目中示例,其实可以得到启发,我们发现题目示例中的摄像头都没有放在叶子节点上! 这是很重要的一个线索,摄像头可以覆盖上中下三层,如果把摄像头放在叶子节点上,就浪费的一层的覆盖。 所以把摄像头放在叶子节…

CH585 CH584 I2C时钟配置(超1MHz 最高1.8MHz)

I2C的R16_I2C_CTRL2寄存器描述:[5:0] FREQ :允许的范围在2~36MHz之间。必须设置在000010b 到100100b 之间RB_I2C_FREQ决定SCL的建立时间和SDA的保持时间,理论上I2C 频率可以达到一分频,实际频率可在36MHz之上,可使用最高80MHz。 I2C的R16_I2C_CKCFGR寄存器描述:[11:0] CC…

JMeter JDBC 请求实战宝典

《JMeter JDBC 请求实战宝典》 宝子们,今天咱就来唠唠 JMeter 里超厉害的 JDBC 请求,这玩意儿就像是数据库世界的神奇魔杖,能帮咱把数据库里的各种秘密(数据)都挖出来,还能对这些数据进行各种操作,不管是查查看、改一改,还是加点新东西、删点旧东西,它都能轻松搞定,而…

STM32-I2C软件模拟

1.I2C介绍 I2C是一种多主机、两线制、低速串行通信总线,广泛用于微控制器和各种外围设备之间的通信。它使用两条线路:串行数据线(SDA)和串行时钟线(SCL)进行双向传输。2.时序启动条件:SCL高电平时、SDA由高电平变为低电平 停止条件:SCL高电平时、SDA由低电平变为高电平…

系统攻防-WindowsLinux远程探针本地自检任意代码执行权限提升入口点

Windows&Linux&远程探针&本地自检&任意代码执行&权限提升&入口点知识点: 1、远程漏扫-Nessus&Nexpose&Goby 2、本地漏扫(提权)-Wesng&Tiquan&Suggester 3、利用场景-远程利用&本地利用&利用条件一、演示案例-操作系统-远程漏…

新能源汽车门店管理:项目管理工具的高效运用策略

使用项目管理工具进行新能源汽车门店管理可以显著提高门店的运营效率和团队协作能力。通过明确项目目标和需求、选择合适的项目管理工具、实施项目管理以及持续优化与改进等步骤,新能源汽车门店可以更好地应对市场变化,提升竞争力。使用项目管理工具进行新能源汽车门店管理,…

C5GAME 游戏饰品交易平台借助 RocketMQ Serverless 保障千万级玩家流畅体验

C5GAME 通过采用云消息队列 RocketMQ 版 Serverless 系列,有效解决了现有架构中存在的性能瓶颈,极大增强了交易系统的灵活性和稳定性,有效实现了流量的削峰填谷,显著提升了整体运维效率,确保了千万级玩家能够享受到流畅的游戏交易体验。作者:邹星宇、刘尧 C5GAME:安全便…

SQL语言1-MySQL

1. SQL语言 1.1 关系型数据库的常见组件数据库:database 表的集合,物理上表现为一个目录 表:table,行:row 列:column 索引:index 视图:view,虚拟的表 存储过程:procedure 存储函数:function 触发器:trigger 事件调度器:event scheduler,任务计划 用户:user 权限…