C++ 访问操作跨平台数据库Sqlite

【数据库】“SQLite”+“DEV-CPP”实现C/C++嵌入式编程操作数据库 正如题目所言,最近笔者需要完成一个的任务,要求使用编程语言,由于笔者用不习惯系列软件,遂选用作为开发工具,由于之前没有相关经验,踩了许多坑,特此记录SQLite+DEV-CPP实现C/C++嵌入式编程操作数据库过程。... 阅读详情
第一步:下载相关文件 

首先到这里下载sqlite-source-3_6_12.zip、sqlite-3_6_12.zip、 sqlitedll-3_6_12.zip三个包,并分别解压。 这里可以在D 盘建立目录

Sqlite目录下包含文件夹 bin(存放解压的dll def 这两个文件用生成lib文件) lib(用于存放生成的lib 文件) source(存放加压的头文件)

第二步:生成SQLite的lib文件 
cmd进入命令行后转到D盘Sqlite下的bin目录下输入: LIB /DEF:SQLITE3.DEF /MACHINE:IX86 
如果找不到命令LIB,则需要将Microsoft Visual Studio\VC\Bin这个目录添加到环境变量(path)里。然后需要把VS 目录下的Common7\IDE 下的mspdb100.dll和mspdbsrv.exe拷贝到VC\bin 目录下(若没有加入这两个文件将出现 缺少mspdb100.dll和Error 2 error C1902: Program database manager mismatch; please check your in 错误) 这样就生成了sqlite3.lib文件,我们在后面需要用到这个库,用于链接win32程序 

第三步:编写测试工程 
新建项目,将sqlite3.h(在源码包里)、sqlite3.dll、sqlite3.lib设置到工程环境里,或者直接拷贝到工程目录下。 
然后我们将cmd切换到sqlite3的目录下,里面有个sqlite3.exe。执行命令: 
> sqlite3 D:\sql.db   ;生成sql.db的数据库文件 
sqlite3 > create table test_tab (f1 int, f2 long); 
sqlite3 > .q
 

测试代码

#include "sqlite3.h"
#include <iostream>
#include <sstream>

using namespace std;
sqlite3 * pDB ;

int createTable()
{
	char* errMsg;
	std::string dropTab = "drop table test_tab;";
	string strSQL= "create table test_tab (f1 int, f2 long);";

	int res= sqlite3_exec(pDB , dropTab.c_str() , 0 , 0 , &errMsg);

	if (res != SQLITE_OK)
	{
		std::cout << "执行SQL 出错." << errMsg << std::endl;
		return -1;
	}
	res = sqlite3_exec(pDB , strSQL.c_str() ,0 ,0, &errMsg);

	if (res != SQLITE_OK)
	{
		std::cout << "执行创建table的SQL 出错." << errMsg << std::endl;
		return -1;
	}
	else
	{
		std::cout << "创建table的SQL成功执行."<< std::endl;
	}

	return 0;
}

int insert1()
{
	char* errMsg;

	int res = sqlite3_exec(pDB,"begin transaction;",0,0, &errMsg);

	for (int i= 1; i < 10; ++i)
	{
		std::stringstream strsql;
		strsql << "insert into test_tab  values(";
		strsql  << i << ","<< (i+10) << ");";
		std::string str = strsql.str();
		res = sqlite3_exec(pDB,str.c_str(),0,0, &errMsg);
		if (res != SQLITE_OK)
		{
			std::cout << "执行SQL 出错." << errMsg << std::endl;
			return -1;
		}
	}

	res = sqlite3_exec(pDB,"commit transaction;",0,0, &errMsg);

	std::cout << "SQL成功执行."<< std::endl;


	return 0;
}

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::cout<< "\n";
	return 0;
}

int select1()
{
	char* errMsg;
	string strSQL= "select * from test_tab;";

	int res = sqlite3_exec(pDB, strSQL.c_str(), callback , 0 , &errMsg);

	if (res != SQLITE_OK)
	{
		std::cout << "执行SQL 出错." << errMsg << std::endl;
		return -1;
	}
	else
	{
		std::cout << "SQL成功执行."<< std::endl;
	}

	return 0;
}

int main()
{
	int res = sqlite3_open("D:\\sql.db", &pDB);

	if( res ){
		std::cout << "Can't open database: "<< sqlite3_errmsg(pDB);
		sqlite3_close(pDB);
		return -1;
	}
	res = createTable();
	{
		return 0;
	}
	res = insert1();
	if (res != 0)
	{
		return 0;
	}
	select1();
	system("pause");
	return 0;
}

【配置环境】SQLite数据库安装和编译以及VS下C++访问SQLite数据库 SQLite数据库安装和编译,SQLite Expert可视化管理工具介绍和使用,Visual Studio下C++访问SQLite数据库 阅读详情

相关推荐

Sqlite3 C/C++ API 操作

参考文献:https://www.runoob.com/sqlite/sqlite-tutorial.html Sqlite 语句在shell是可以执行的,本文是对sqlite语句在C/C++程序中执行的说明。 操作步骤: 数据库打开->SQL语句执行->CallBack函数处理执行结果->数据库关闭 数据库打开 SQLITE_API int sqlite3_open( const char *filename, /* Database filename (UTF...

李庆年 1483

虚拟机中一个系统用c++操作另一个系统的sql Server数据库

以我在xp系统中写c++代码去操作win7系统的数据库为例。首先要确保两个系统之间能够ping通。然后在xp系统中telnet sqlserver的端口号。

weixin_45349637的博客 193

c++ qt连接操作sqlite

SQLite是一种轻量级的数据库管理系统,源码有C语言编写,没有第三方依赖,在sqlite官网下载源码后,可以直接在程序中使用,例如,我下载源码后,直接加入到项目中进行编译。SQLite具有以下特点:嵌入式数据库:SQLite是一种嵌入式数据库,意味着它不需要独立的服务器进程来运行,而是直接嵌入到应用程序中。这使得SQLite非常适合嵌入式设备、移动应用和桌面应用等场景。无需配置:SQLite不需要复杂的配置或管理,你只需在应用程序中引入SQLite库,就可以开始使用数据库。

琅嬛福地 1998

C++连接SQL数据库

C++连接SQL数据库第一步 系统配置 1.设置SQLSERVER服务器为SQL登录方式,并且系统安全性中的sa用户要设置登录功能为“启用”,还有必须要有密码。 2.需要在ODBC中进行数据源配置,数据源选\”SQL SERVER”,登录方式使用“使用输入用户登录ID和密码的

lins1393997412的专栏 1万+

C/C++连接SQLite数据库及基本操作

用VC++6.0开发的基于对话框的应用程序,可以编译运行。目录下有一个名为student.db的文件,是SQLite数据库文件。这个代码说明了怎么用C/C++连接SQLite数据库文件及进行基本的操作,比如插入新的数据,查询数据。对学习SQLite数据库有帮助

国密套件ECC-SM2-SM4-CBC-SM3和ECDHE-SM2-WITH-SM4-SM3

双方交换各自的公钥,最后A计算点(x1,y1) = d1Q2,B计算点(x2,y2) = d2Q1,由于椭圆曲线上是可以满足乘法交换和结合律,所以 d1Q2 = d1d2G = d2d1G = d2Q1 ,因此双方的 x 坐标是一样的,所以它是共享密钥,也就是会话密钥。4、客户端和服务端分别使用工作密钥,计算主密钥,客户端随机数,服务端随机数,字符串常量"key expansion",经PRF计算生成工作密钥。工作密钥包括加密密钥和校验密钥,具体密钥长度由选择的密码算法决定。客户端支持的压缩算法列表。

Java学习笔记 3782

C++操作SQLite数据库

http://www.open-open.com/lib/view/1339816538632

228

【sap2000】部分模型通过.s2k文件合并模型generating a global model through partial models by .s2k text file

现在需要通过选项File → Import → SAP2000 .s2k Text File → Add to existing model(如果使用其中一个部分模型作为基础)或New model(如果使用新文件)添加部分模型,并使用以下导入选项。模型A(阶段1/5) Model A (Phase 1/5)模型B(阶段2/5) Model B (Phase 2/5)模型C(阶段3/5) Model C (Phase 3/5)模型E(阶段5/5) Model E (Phase 5/5)

hmywillstronger的博客 1748

vc连接数据库方法小结(转)

C++连接数据库示例代码参考: 可以考虑一下 Integrated Security=SSPI好像是windows身份验证吧,你之后的"User ID=sa;pwd=;"则是SQL Server身份验证,试一下去除"Integrated Securit

liuxiuk的专栏 3241

K8s认证文件丢失的应急处理与恢复策略

本文详细介绍了Kubernetes(K8s)认证文件丢失时的应急处理与恢复策略。从快速诊断问题范围到不同场景的临时解决方案,再到深度恢复方案(无损重建、部分重置、完全重建),提供了全面的操作指南。同时强调了生产环境中的防丢失设计、高可用集群的特殊处理以及日常运维建议,帮助运维人员有效应对认证文件丢失的紧急情况。

weixin_33743248的博客 327

保姆级教程:用GROMACS 2022.4的拉伸模拟(SMD)加速蛋白-蛋白组装过程

本文详细介绍了如何使用GROMACS 2022.4的拉伸分子动力学模拟(SMD)技术加速大蛋白组装过程。通过CHARMM36力场和SMD技术,将传统需要数月的蛋白结合过程缩短至数天,大幅提升模拟效率。文章包含参数设计、索引组创建、周期性边界处理等实战技巧,并提供了完整的GPU加速工作流和常见问题解决方案。

weixin_30338481的博客 445

如何实现SQL Server数据库的共享

SQL Server是本地电脑的数据库,要是其人想访问该电脑上数据库,就需要实现SQL Server的共享。 1、注册用户名,也就是对方使用的用户名 2、设置登录名等信息 3、服务器角色 4、用户映射 5、状态 到这里,添加用户就已经完成了,然后 1、选择属性 2、安全性 这里有关SQL Server数据库配制就结束了,然后配制一下防火墙,把SQL Server加进去 1、控制面板找到防火墙 2、选择运行应用或功能通过。。。。。。 3、选择允许其他

aaaPostcard的博客 1万+

(一)ANSYS WORKBENCH实践入门

ANSYS-workbench 有限元分析应用基础教程 (张晔)学习笔记

qq_51767372的博客 1万+

CppSQLite:一个简单易用的跨平台SQLite C++封装库

CppSQLite:一个简单易用的跨平台SQLite C++封装库 项目介绍 CppSQLite 是一个轻量级、跨平台的C++封装库,旨在简化SQLite数据库的访问和操作。该项目由NeoSmart Technologies维护,是原始CppSQLite项目的分支。CppSQLite的核心代码以一个简单的.cpp和.h文件对的形式提供,用户只需将其包含在项目中即可轻松集成。 项目技术分析 CppS...

gitblog_01185的博客 1428

Matlab实战:用递归最小二乘法(RLS)搞定动态系统参数辨识(附完整代码)

本文通过Matlab实战,详细介绍了如何利用递归最小二乘法(RLS)进行动态系统参数辨识。文章从理论优势切入,提供了完整的仿真数据生成、RLS算法核心实现代码,并对参数收敛过程、预测误差及不同遗忘因子的影响进行了可视化分析与性能评估,为工程实践提供了清晰的指南。

weixin_29035405的博客 503

Android 13.0 USB 麦克风音频采集优化:解决延时、杂音和无声问题

摘要:本文针对Android智能会议设备中USB麦克风存在的三大问题(录音延时、概率性杂音和无声)进行了深入分析和优化。通过预填充静音帧降低90%启动延时,分离采集/播放互斥锁消除杂音,采用持久化配置解决无声问题,并新增状态通知机制提升用户体验。优化后测试显示:录音延时从1200-2000ms降至100-200ms,故障率降至0%,CPU占用降低30%。该方案适用于各类USB音频设备和视频会议系统,为低延时音频采集提供了可靠解决方案。

ip0417的博客 229

SQLite 数据访问组件(LiteDAC)V5.0.2 全部源代码

SQLite 数据访问组件(LiteDAC)V5.0.2 全部源代码 去发现同类优质开源项目:https://gitcode.com/ SQLite 数据访问组件(LiteDAC)V5.0.2_Full Sources【5.0.2 09-Dec-21】提供了含全部源代码的资源,适用于多种开发环境和操作系统。以下是关于该资源文件的详细介绍: 简介 SQLite 数据访问组件(LiteDAC)是一个功...

gitblog_06769的博客 978

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SQLite数据访问组件LiteDACV5.0.2全部源代码:跨平台数据库访问的利器

SQLite数据访问组件LiteDACV5.0.2全部源代码:跨平台数据库访问的利器 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 SQLite 数据访问组件(LiteDAC)V5.0.2_Full Sources 是一款专门为 Delphi 和 C++ Builder 开发环境设计的组件库。它支持与 SQLite 数据库的本机连接,让开发者能够轻松地在各种操作系统(...

gitblog_06750的博客 789

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

推荐:SOCI — 打造无忧的数据库访问体验

在现代软件开发中,数据库是不可或缺的一部分。然而,数据库访问和操作往往伴随着冗长且容易出错的代码。这时,一款出色的数据库访问库就显得尤为重要了。今天要为大家推荐的是**SOCI**(简单开放数据库调用接口),这是一款专为C++开发者打造的高性能、易于使用的数据库访问库。 ## 简介 SOCI最初由Maciej Sobczak于CERN研发,旨在提供Oracle数据库的一个简洁抽象层。随着时间推

gitblog_00990的博客 596

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

cocos2d-x在Android平台打开SQLite数据库

之前看了老G的博客,学习如何在cocos2d-x中使用SQLite,然后自己实践后发现PC上正常,但是Android平台无法打开数据库。 (关于PC上基本的使用方法,老G博客的传送门:http://4137613.blog.51cto.com/4127613/772518  ) Android平台是返回错误代码14。 看SQLite的宏定义:#define SQLITE_CA

宇宙怪猫小屁孩 1147

SOCI核心功能解析:为什么它是C++数据库开发的首选库

SOCI(The C++ Database Access Library)是一款专为C++开发者设计的高效数据库访问库,它通过简洁的API和灵活的架构,帮助开发者轻松实现跨数据库平台的应用开发。无论是处理MySQL、PostgreSQL还是Oracle等主流数据库,SOCI都能提供一致的编程体验,大幅降低数据库操作的复杂度。 ## 📊 模块化架构:灵活适配多数据库环境 SOCI采用**插件式

gitblog_00408的博客 349

C++ 17 员工信息管理系统:从链表到二进制文件,3种数据持久化方案对比

本文深入探讨了C++17员工信息管理系统中三种数据持久化方案:链表+二进制文件、SQLite数据库和JSON/XML序列化的优缺点。通过实际代码示例和性能对比,为开发者提供了技术选型的实用指南,帮助优化系统性能和可维护性。

daxi1047的博客 402

常用内存数据库介绍(二)

常用内存数据库介绍(二)

gftygff的博客 321

SQLITE3,C语言使用(转)

前序: Sqlite3 的确很好用。小巧、速度快。但是因为非微软的产品,帮助文档总觉得不够。这些天再次研究它,又有一些收获,这里把我对 sqlite3 的研究列出来,以备忘记。 这里要注明,我是一个跨平台专注者,并不喜欢只用 windows 平台。我以前的工作就是为 unix 平台写代码。下面我所写的东西,虽然没有验证,但是我已尽量不使用任何 windows 的东西,只使用标准 C 或标准C+...

yuanlanjun 306

【C++第三方库】快速上手---轻量级数据库SQLite和单元测试工具Gtest

本篇文章将写道如何快速的上手Gtest和SQLite第三方库,这==两个第三方库都是在项目编写过程中非常重要的

溟洵的博客 7811
上一篇: CreateThread与_beginthreadex本质区别
下一篇: fatal error C1902: Program database manager mismatch; please check your installation; error LNK2001:
雪岢奇
博客等级 码龄17年 310粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值