sqlite3

来源:互联网 发布:启用网络发现保存不了 编辑:程序博客网 时间:2024/06/13 04:13

在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”

 

int testdb(void)

{

    sqlite3 *db=NULL;

    char *zErrMsg = 0;

    int rc;

 

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

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

    if( rc )

    {

        fprintf(stderr, “Can’t open database: %s\n”, 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 , 0 , 0 , &zErrMsg );

 

    //插入数据

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

    sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

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

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

 

    //查询数据

    sql = “SELECT * FROM test “;

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

    int i = 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] = %s\n”, i , azResult[i] );

 

    //删除数据

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

    sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

    //释放掉azResult 的内存空间

    sqlite3_free_table( azResult );

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

    int c=getchar();

 

    return 0;

}

在main.cpp里输入代码:

#include “sqlite3.h” 

 

int testdb(void);

int main( void )

{

    testdb();

}

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

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

至此大功告成。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 火车上遇到占座不让的人怎么办 滁州婴儿打疫苗的绿本子怎么办 检查四维说宝宝嘴巴显示不清怎么办 携程订票付款成功一直没出票怎么办 手机微信支付密码忘了怎么办 存入卡里的钱却说余额不足怎么办 买高铁票身份证未通过审核怎么办 网上订演出票不配送了怎么办 百度糯米订的演出票不配送了怎么办 高铁误点改签后的车次没票了怎么办 高铁晚点没赶上下班车怎么办 上班期间单位没给交养老保险怎么办 一键启动车钥匙遥控失灵怎么办 已经订购的火车票误了火车怎么办 飞机去程取消分开买的返程怎么办 订完学生票发现使用次数过了怎么办 坐火车买学生票没带学生证怎么办 买了学生票学生证磁条没了怎么办 买了动车学生票没带学生证怎么办 身份证没磁了怎么办能买火车票 格力空调保修单丢了怎么办 格力空调保修期内坏了怎么办 国际联程航班第一程延误怎么办 大麦网演唱会的票售罄了怎么办 国内转机航班第一班延误了怎么办 联程机票下一程航班被取消怎么办 联程机票第一班航班取消怎么办 联程机票第二段航班被取消怎么办 联程航班第一程延误行李怎么办 联程航班未赶上第二程行李怎么办 高铁晚点赶不上下一趟动车怎么办? 动车晚点赶不上下一趟车怎么办 动车晚点导致没赶上下一趟怎么办 浙大三位一体选考分数报错了怎么办 报到证上时间到期了还没报到怎么办 不停的打嗝已经超过24小时怎么办 面对不给下属做主的领导怎么办 法院说退款受伤人去不了证明怎么办 e栈快递柜没收到短信怎么办 京东快递放门卫丢了怎么办 丰巢快递柜收不到取件码怎么办