zoukankan
html css js c++ java
在vc2008 mfcC++中使用sqlite的示例
http://owlman.org/?p=890
在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 ”, sqlite3_errmsg(db));
sqlite3_close(db);
return (1);
}
else
printf(“You have opened a sqlite3 database named zsl.db successfully! ”);
//创建一个表,如果该表存在,则不创建,
//并给出提示信息,存储在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 ” , nrow , ncolumn );
printf( “ The result of querying is : ” );
for( i=0 ; i<( nrow + 1 ) * ncolumn ; i++ )
printf( “azResult[%d] = %s ”, 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。
至此大功告成。
查看全文
相关阅读:
使用BeanShell 对比取出来的值
https 请求的端口是443 注意
Jmeter录制App 请求是HTTPS的
Charles-断点
随手记--分配事件概率
看日志有没有 出现错误的字段 (如 crash ) 查找app闪退
学习的网站
xss 攻击 sql 注入
app的apk 安装的方法--adb--命令安装 (含把apk放某个文件夹,每次启动自己安装)
把2列相加的方法
原文地址:https://www.cnblogs.com/blogpro/p/11426897.html
最新文章
今天去python官网下载包安装的时候的问题记录
unittest--unittest.defaultTestLoader()的方法(智能获取文件下面的case去跑的方法)
unittest单元测试框架总结
HTMLTestRunner 汉化版---来源一个大神的源码(加了失败截图,用例失败重新执行 功能)
unittest框架+ HTMLTestRunner 出报告时,展示控制台信息 不同展示的参数写法 加verbosity
sql注入笔记
SQL万能密码:' or 1='1
常见的XSS攻击代码
unittest之跳过用例(skip) (含如何调用类里面函数相互调取变量的方法)
Jmeter录制HTTPS 补充
热门文章
chrome瀏覽器去掉緩存的方法
获取文件当前路径的方法,加拼接路径
导入文件
js大法处理无法点击的问题
解决时间控件input不能选择的问题
加载Firefox 和 chrome 浏览器配置
selenium之 chromedriver与chrome版本映射表
Appium+python自动化29-toast消息(亲测 ok)
Python脚本报错AttributeError: ‘module’ object has no attribute’xxx’解决方法
登陆测试点
Copyright © 2011-2022 走看看