设为首页 收藏本站
查看: 1178|回复: 0

[经验分享] C/C++下使用SQLite轻量级数据库

[复制链接]

尚未签到

发表于 2016-11-22 10:28:12 | 显示全部楼层 |阅读模式
一、SQLite

SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite

也被用于很多软件,打开飞信的安装目录,就能看见 SQLite ,估计是被用来存储聊天记录的。

二、下载SQLite

我下的版本为sqlite-amalgamation-3071400.zip,这个包含了主要的源代码。sqlite-dll-win32-x86-3071400.zip这个是Windows下的编译好的DLL文件和def文件,解压缩后包含两个文件,sqlite3.def和sqlite3.dll。



编译源代码很简单,新建立一个C++空项目,把sqlite-amalgamation-3071400.zip解压缩后的文件拷进去,编译、链接,就行了。我的目的是把sqlite数据库作为自己项目中的一部分,是作为嵌入的一部分使用的。这个要利用到sqlite3.dll文件。可是源文件只有sqlite3.def和sqlite3.dll没有sqlite3.lib文件,怎么用呢?根据def文件可以生成对应的LIB文件。以下是命令行生成LIB文件。找到VS的安装路径,我的是D:\Program

Files\,用命令行进入以下路径。



D:\Program Files\Microsoft Visual Studio 9.0\VC\bin>lib /def:sqlite3.def /machine:ix86



三、使用





DSC0000.gif DSC0001.gif View Code


//[cpp] view plaincopyprint?
//#pragma comment(lib,"sqlite3.lib")  
#include <iostream>  
#include <string>  
#include <sstream>  
#include "sqlite3.h"  
using namespace std;  
sqlite3* pDB;  
static int callback(void *NotUsed, int argc, char **argv, char **azColName)  
{  
int i =0;  
std::cout<< azColName << " = "<< (argv ? argv : "NULL")<< ", " ;  
std::cout<< "\n";  
return 0;  
}  
int main()  
{  
int res = sqlite3_open("mydatabase.db", &pDB);  
if( res ){  
std::cout << "Can't open database: "<< sqlite3_errmsg(pDB);  
sqlite3_close(pDB);  
return -1;  
}  
char* errMsg;  
string dropTab="drop table test;";  
string createStrSQL= "create table test(one int, two long);";  
int res;  
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,createStrSQL.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;  
for (int i= 1; i < 10; ++i)  
{  
stringstream strsql;  
strsql << "insert into test 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;  
}  
}  
string strSQL= "select * from test;";  
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;  
}  


  记在这里,学习啊!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-303931-1-1.html 上篇帖子: 棋牌游戏服务器架构: 部署 下篇帖子: GeoServer和MapServer的对比[转]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表