加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

sqlite3

发布时间:2020-12-12 23:49:38 所属栏目:百科 来源:网络整理
导读:在C++中使用sqlite的示例 2011年8月5日 admin 发表评论 阅读评论 最近因为工作原因,终于使我有机会腾出时间来接触了一下SQLite数据库,结果是该数据库在一系列高级Framework的实用性和用户体验让我感到兴奋,于是我打算在主要的工作环境中—C++—试试看这个

在C++中使用sqlite的示例

2011年8月5日 admin 发表评论 阅读评论

最近因为工作原因,终于使我有机会腾出时间来接触了一下SQLite数据库,结果是该数据库在一系列高级Framework的实用性和用户体验让我感到兴奋,于是我打算在主要的工作环境中—C++—试试看这个工具,也许以后可以作为常用的工具。一些实验下来,感觉不错,下面将简单的介绍一下静态链接(即连接.ib文件)的方式:

准备工作:

使用环境:环境: VS2008

在SQLite的官方网站下载Windows平台下的3.7.4版本的SQLite,下载地址:
http://www.sqlite.org/sqlite-dll-win32-x86-3070400.zip
压缩文件中包含了sqlite3.dll和sqlite3.def文件,接着打开V2008自带的命令行工具(工具->vs2008 command prompt里输入下面的命令行,将sqlite3.dll和sqlite3.def文件放在命令行工具打开时提示的路径), 用LIB命令生成用于连接(LINK)使用的lib文件:
LIB /DEF:sqlite3.def /machine:IX86
这样就生成了:sqlite3.lib 和 sqlite3.exp 两个文件,sqlite3.lib文件是我们连接程序所使用的。

在SQLite官方网站下载SQLite3的源程序,下载地址:
http://www.sqlite.org/sqlite-amalgamation-3070400.zip
解压出sqlite3.h文件

打开VS2008,新建项目→Visual C++→win32控制台应用程序→(项目名字自己取),然后在项目向导里勾选”空项目”,如下图所示:

将(1)和(2)中得到的文件放在项目源文件所在的目录(即stdafx.h所在文件夹)中,此时该目录下应该包含:
sqlite3.h
sqlite3.dll
sqlite3.lib
sqlite3.def
这四个文件.

将sqlite3.h添加到工程中,需要使用数据库的地方#include "sqlite3.h"

开始编写程序

先配置一下项目,选择菜单: “项目” → “(项目名称) 属性…”,在弹出的对话框中选择”配置属性” →”链接器” →”输入”,在”附加依赖项”中输入”sqlite3.lib”,并在”模块定义文件”中输入”sqlite3.def”,如果需要的话,还可以在”延迟加载的dll”里输入”sqlite3.dll”,整体如下图所示:

然后继续在对话框中选择”配置属性”→”C/C++”→”预编译头”,在”创建/使用预编译头”中确认一下状态是”不使用预编译头”,以便项目不会引入一些windows环境相关的预处理选项。然后”确定”。

接下来,将sqlite3.h引入项目,然后新建源文件db.cpp和main.cpp,在db.cpp里输入代码:

#include <cstdio>

#include <cstdlib>

#include “sqlite3.h”

inttestdb(void)

{

sqlite3 *db=NULL;

char*zErrMsg = 0;

intrc;

//打开指定的数据库文件,如果不存在将创建一个同名的数据库文件

rc = sqlite3_open(“zsl.db”,&db);

if( rc )

{

fprintf(stderr,“Can’t open database: %sn”,sqlite3_errmsg(db));

sqlite3_close(db);

return(1);

}

else

printf(“You have opened a sqlite3 database named zsl.db successfully!n”);

//创建一个表,如果该表存在,则不创建,

//并给出提示信息,存储在zErrMsg

char*sql =” CREATE TABLE test(ID INTEGER PRIMARY KEY,AGE INTEGER,LEVEL INTEGER,NAME VARCHAR(12),SALARY REAL);”;

sqlite3_exec( db,sql,&zErrMsg );

//插入数据

sql =“INSERT INTO ”test” VALUES(NULL,1,’200605011206′,18.9 );”;

sqlite3_exec( db,&zErrMsg );

intnrow = 0,ncolumn = 0;//查询结果集的行数、列数

char**azResult;//二维数组存放结果

//查询数据

sql =“SELECT * FROM test “;

sqlite3_get_table( db,&azResult,&nrow,&ncolumn,&zErrMsg );

inti = 0 ;

printf(“row:%d column=%d n”,nrow,ncolumn );

printf(“nThe result of querying is : n”);

for( i=0 ; i<( nrow + 1 ) * ncolumn ; i++ )

printf(“azResult[%d] = %sn”,i,azResult[i] );

//删除数据

sql =“DELETE FROM test WHERE AGE = 1 ;”;

sqlite3_exec( db,&zErrMsg );

//释放掉azResult的内存空间

sqlite3_free_table( azResult );

sqlite3_close(db);//关闭数据库

intc=getchar();

return0;

}

在main.cpp里输入代码:

#include “sqlite3.h”

inttestdb(void);

intmain(void)

{

testdb();

}

然后编译,如果没什么问题的话,终端会输出如下结果:

而在源文件所在目录会多出一个数据库文件:zsl.db。

至此大功告成。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读