vs2010 mfc sqlite怎么引用SQLite

二次元同好交流新大陆
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
将sqlite数据库源文件夹sqlite放在工程目录下;2)单击解决方案名上的“显示所有文件”按钮,工程中出现sqlite的目录文件夹,展开,选中sqlite3.c和sqlite3.h两个文件右键,在弹出的菜单中选择"包含在项目中"3)在工程中属性中C/C++ =& 预编译头/预编译头中选择 "不使用预编译头"4)引用时在头文件中包含:#include "sqlite\\sqlite3.h"即可;具体使用其调用接口请百度;sqlite数据库主要应用于嵌入式数据库的开发,以纯C编写,不依赖数据库平台,只有一个db文件,不用像Orcal,SQLSever,MySQL一样需要数据库程序的支撑。Demo:请在CSDN中下载;http://download.csdn.net/detail/zhouwuhua/8236937
阅读(997)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'C++----VS2010使用Sqlite数据库',
blogAbstract:'1)将sqlite数据库源文件夹sqlite放在工程目录下;2)单击解决方案名上的“显示所有文件”按钮,工程中出现sqlite的目录文件夹,展开,选中sqlite3.c和sqlite3.h两个文件右键,在弹出的菜单中选择\"包含在项目中\"3)在工程中属性中C/C++ =& 预编译头/预编译头中选择 \"不使用预编译头\"4)引用时在头文件中包含:#include \"sqlite\\\\sqlite3.h\"即可;具体使用其调用接口请百度;',
blogTag:'c++,sqlite数据库',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:5,
publishTime:8,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}&这是前几天上面派下来的需求,说要在本地存储大约6W条数据,因为虽然webservice比较方便,但是每次请求时都要传输这6W条数据,不免有点费流量,毕竟客户端用的都是3G的笔记本。于是就开始在网上寻求解决方案。首先想到的是XML,但后来马上就否了,读取文件的速度太慢了,会影响用户体验。接下来就是数据库,MSSQL就算了,臃肿不说,客户必然不愿意在自己的机器上装些MS的服务;SQL Server也算了,也是需要服务的;SQLite不错,不需要单独安装服务,还有C/C++的API,就它了!去官网(猛戳传送)上下载了最新的SQLite的dll+源代码,然后就可以开始了。SQLite并没有一次性做到位,只有下载这些东西是不能放在vs2010中并马上使用的,下载下来的文件中有sqlite3.c/h/dll/def,还是不够用的。我们需要的sqlite3.lib文件并不在其中,需要我们自己动手了。这儿要用到visual studio提供的Visual Studio Command Prompt工具了。打开之后,进入含有sqlite3.dll和sqlite3.def的目录下,输入以下命令: LIB&/DEF:sqlite3.def&/MACHINE:IX86&&就能生成sqlite3.exp和sqlite3.lib文件了,这样在工程中就可以加入lib文件进行编译了。650) this.width=650;" src="/d/file/p//bd65e3105adf989f7b019.jpg" border="0" alt="" />SEC 1:因为只是演示API,所以这次在vs2010下建立一个空的win32工程SQLite3Test,在工程的属性-链接-输入中添加sqlite3.lib的引用。添加新的文件main.cpp,写一个main函数,并编译一下。好,接下来把sqlite3.h/def/exp/lib通通放进SQLite3Test/SQLite3Test/目录下,跟main.cpp在一起,如图:650) this.width=650;" src="/d/file/p//6ce13a006ea45c5b8d563c1d05e1e252.jpg" border="0" alt="" />把sqlite3.dll跟生成的exe放在一起。SEC 2:接下来开始进行sqlite3的使用。引入sqlite3.h头文件,并写下如下代码:#include&&iostream&&#include&&sqlite3.h&&&using&namespace&&&int&main(int&argc,&char**&argv)&{&&&&&sqlite3&*&conn&=&NULL;&&&&&char&*&err_msg&=&NULL;&&&&&char&sql[200]&=&&&;&&&&&&//&打开数据库,&创建连接&&&&&if(sqlite3_open(&test.db&,&&conn)&!=&SQLITE_OK)&&&&&{&&&&&&&&&printf(&无法打开!&);&&&&&}&&&&&//&关闭连接。&&&&&if&(sqlite3_close(conn)&!=&SQLITE_OK)&&&&&{&&&&&&&&&printf(&无法关闭,错误代码:&%s/n&,&sqlite3_errmsg(conn));&&&&&&&&&exit(-1);&&&&&}&&&&&&printf(&操作成功!/n&);&&&&&&return&0;&}&sqlite3_open的函数原型如下:SQLITE_API&int&sqlite3_open(&&&const&char&*filename,&&&/*&Database&filename&(UTF-8)&*/&&&sqlite3&**ppDb&&&&&&&&&&/*&OUT:&SQLite&db&handle&*/&);&作用就不言而喻了,打开数据库。第一个参数是数据库文件的名称,如果没有,那就会自动创建一个。第二个参数是sqlite3的实例句柄的指针的指针。。(看到这儿我想起来,当时在linux下自己写mysql的C++api的时候,也是用的双重指针,搞死个人哟。。)常言道:&有打开,就有关闭!&,所以sqlite3_close()就起了这个作用。不过sqlite3_close的原型是这样的:SQLITE_API&int&sqlite3_close(sqlite3&*);&//要格外注意双重指针和普通指针。。有了上面的万金油例子,想必已经对初始化有所了解了。运行后就在Debug目录下多了个test.db文件,不过大小为0KB,因为木有内容嘛!SEC 3:在数据库中创建表并插入数据。在open和close的之间写入如下代码://&执行SQL&&sprintf(sql,&&CREATE&TABLE&test_for_cpp&/
(id&int,&name&varchar(20),&age&int)&);&&if&(sqlite3_exec(conn,&sql,&NULL,&NULL,&&err_msg)&!=&SQLITE_OK)&&{&&&&&&printf(&操作失败,错误代码:&%s&,&err_msg);&&&&&&exit(-1);&&}&&&//添加10条记录&for&(int&i&=&0;&i&&&10;&i++)&{&&&&&//&执行SQL&&&&&sprintf(sql,&&INSERT&INTO&test_for_cpp&/
(id,&name,&age)&VALUES&/
(%d,&'%s',&%d)&,&i,&&testPeople&,&i);&&&& if&(sqlite3_exec(conn,&sql,&NULL,&NULL,&&err_msg)&!=&SQLITE_OK)&&{&&&&&&printf(&操作失败,错误代码:&%s&,&err_msg);&&&&&&exit(-1);&&}&&}&sqlite3_exec的原型如下:SQLITE_API&int&sqlite3_exec(&&&sqlite3*,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/*&An&open&database&*/&&&const&char&*sql,&&&&&&&&&&&&&&&&&&&&&&&&&&&/*&SQL&to&be&evaluated&*/&&&int&(*callback)(void*,int,char**,char**),&&/*&Callback&function&*/&&&void&*,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/*&1st&argument&to&callback&*/&&&char&**errmsg&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/*&Error&msg&written&here&*/&);&第一个参数为sqlite3实例。第二个参数为要执行的sql语句。第三个参数为回调函数的指针。因为这里只是创建表和插入数据,并没有数据返回,所以不需要填写回调函数。以NULL代替。第四个参数为回调函数所要使用的参数。同第三条。第五个参数为错误信息。这次再运行一下,就可以看到test.db已经不再是0KB了。650) this.width=650;" src="/d/file/p//6fcd64639fefeb.jpg" border="0" alt="" />SEC 4:再常言道:&有插入,就有读取!&下面来读取数据库文件中的数据。刚才提到了sqlite3_exec的回调函数,现在需要这个函数了。首先声明一个回调函数:int&sqlite3_exec_callback(void&*data,&int&nColumn,&&
char&**colValues,&char&**colNames);&四个参数的类型不能变。然后写下该回调函数的实现:int&sqlite3_exec_callback(void&*data,&int&nColumn,&char&**colValues,&char&**colNames)&{&&&&&for&(int&i&=&0;&i&&&nC&i++)&&&&&{&&&&&&&&&printf(&%s/t&,&colValues[i]);&&&&&}&&&&&printf(&/n&);&&&&&&return&0;&}&接下来在插入条目语句的后面写下下面的语句://&查询&sprintf(sql,&&SELECT&*&FROM&test_for_cpp&);&sqlite3_exec(conn,&sql,&&sqlite3_exec_callback,&0,&&err_msg);&TIP: 前面创建表、插入数据的代码可以先注释掉,否则运行一次就会插入10条数据,会造成点困扰。运行就可以看到结果了:650) this.width=650;" src="/d/file/p//da0e29abb61d65db20bfbb.jpg" border="0" alt="" />因为该回调函数每从数据库中取出一条数据就要调用一次,所以这是最耗时间的过程,这块代码应该尽量高效。这只是一个简单的例子,不过已经足够平时的小众软件使用了。一些高级的用法比如sqlite3_db_mutex(读写互斥锁)、sqlite3_backup_step(差异备份)等等,就可以看看sqlite3官方的教程了(猛戳传送)。本文出自 “正面旺得福反面泰瑞宝” 博客,请务必保留此出处http://serious./554vs2010中,对sqlite的读写有原生支持吗?还是要下载驱动的?
[问题点数:40分,结帖人LinuxCard]
vs2010中,对sqlite的读写有原生支持吗?还是要下载驱动的?
[问题点数:40分,结帖人LinuxCard]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2016年3月 .NET技术大版内专家分月排行榜第二2016年1月 .NET技术大版内专家分月排行榜第二2015年12月 .NET技术大版内专家分月排行榜第二2015年2月 .NET技术大版内专家分月排行榜第二2015年1月 .NET技术大版内专家分月排行榜第二2014年11月 .NET技术大版内专家分月排行榜第二2014年5月 .NET技术大版内专家分月排行榜第二2014年4月 .NET技术大版内专家分月排行榜第二2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二
2016年4月 .NET技术大版内专家分月排行榜第三2016年2月 .NET技术大版内专家分月排行榜第三2015年10月 .NET技术大版内专家分月排行榜第三2015年9月 .NET技术大版内专家分月排行榜第三2015年7月 .NET技术大版内专家分月排行榜第三2015年6月 .NET技术大版内专家分月排行榜第三2015年5月 .NET技术大版内专家分月排行榜第三2015年4月 .NET技术大版内专家分月排行榜第三2014年12月 .NET技术大版内专家分月排行榜第三2014年10月 .NET技术大版内专家分月排行榜第三2014年9月 .NET技术大版内专家分月排行榜第三2014年1月 .NET技术大版内专家分月排行榜第三2013年12月 .NET技术大版内专家分月排行榜第三2013年10月 .NET技术大版内专家分月排行榜第三2013年5月 .NET技术大版内专家分月排行榜第三2011年9月 .NET技术大版内专家分月排行榜第三2011年2月 .NET技术大版内专家分月排行榜第三2010年2月 .NET技术大版内专家分月排行榜第三
2013年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第三
2011年12月 .NET技术大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。VS2010怎么引用SQLite_百度知道
VS2010怎么引用SQLite
项目-&gt.exe和link:右键sqlite3工程-&gt,右键test2工程-&gt.lib.obj文件复制到free
sqlite3_close(db)。在VS2010中编写简单程序,在出现的对话框中选择上述三个文件!&#47.lib.VC&#92:9;
#include &,生成动态的sqlite3:IX86;现有项;;
scanf(&select * from clients:&#92。6;SoftwareDesign\ test1;bin找到lib.lib,我的是在E;
#include &
printf(&quot,编译后所有代码都嵌入到test2;sqlite-dll5.lib相当于一个h文件;Projects\Projects&#92。4;
sqlite3_get_table(db.exe中.按F5键;Projects&#92,&quot.dll文件而无法运行.h&quot、sqlite3!&#47。10;can'Win32项目;SoftwareDesign\
char *errmsg = NULL.32MB)。可能是VS或sqlite版本不同的原因)5;添加-&gt,命名为sqlite3(其他名称也行)。(任务一步骤7中的代码)9.0\SQLite&#92,我的是E。将sqlite3;/
rc = sqlite3_open(&quot.dll复制到工程所在文件目录中:1.在VS2010中编写简单程序.lib将导出声明和实现都放在lib中,如下图所示.lib复制到test2工程所在的文件目录中,Microsoft Visual Studio 10;test1,运行时需要dll文件的支持;Microsoft Visual Studio 10, _TCHAR* argv[])
int rc,转到上述sqlite-dll文件夹下.h和步骤6中生成的静态sqlite3,选择DLL(D)。
return 0,会提示因缺少sqlite3.lib和sqlite3。 任务一。将G.h&Projects&#92, tr.zip(我用的此版本);.dll(sqlite3;现有项;Microsoft Visual Studio 10:LIB &#47:网上有的讲解需要配置很多的参数等等;Debug:这时.dll动态链接库.cpp中的代码替换为上述的代码.exe所在目录下。PS;此处可以自己定义输出格式.h;stdlib。因为静态的sqlite3.dll。11;VisualStudio2010Workspace\Win32控制台应用程序。3; &#47.dll。)6.在sqlite官网下载sqlite-amalgamation-3071000.将sqlite3;新建-&stdafx.cpp ,生成静态的sqlite3。此时不需dll文件支持.lib文件.exe(大小为501KB).exe(大小为29KB);DEF、sqlite3.exe同一目录下。7;
int i.dll文件)的导出部分的声明;.zip 中的“sqlite3.分别解压上述两个文件到各自文件夹下(sqlite3.lib将导出声明和实现都放在lib中.obj文件.lib,文件-&results[%d]= %s&#47,只有47KB大小;
fprintf(stderr,是对实现部分(,运行速度快.h”.cpp中的内容替换为以下代码:&#92,所以操作中我发布的是release版本)如下图所示4.h&gt.lib(大小为2;VisualStudio2010Workspace&#92.exe文件.0&#92,nrows。选择sqlite3:lib sqlite3.dll文件复制到test1,添加-&gt。2.编译的同时会在工程所在目录中产生sqlite3。输入命令。双击可以直接运行;VisualStudio2010Workspace&#92,运行成功:\
tr=(nrows+1)*i&
#include &lt。我的是E;项目-&SoftwareDesign\IDE下的mspdb100;Debug下会生成test2,test2.test2,&ncols.在VS2010中:&#47:&#92。3。这时.0&#92.输入命令.def.lib只是将声明部分编译到test1;/tr。
&#47:&#92.dll复制到&#47,msobj100;SQLite&#92。将lib。2;test2&#92:
一.打开cmd窗口;DB has %d rows and %d cols&#47。在向导设置中.按F7键编译(或右键-&gt./n/
8;Projects&#92,其生成的sqlite3;Common7&#92.h”三个文件添加到工程中;VC&#92,具体做法,运行窗口出现后会马山消失、“sqlite3,再双击运行test1;生成).exe所在文件夹下;Release下.exe,&a):&#92.打开cmd窗口;VisualStudio2010Workspace&#92,我的是G,在出现的对话框中选择上一步中的sqlite3.exe mspdb100.lib.exe所在目录下;test2&#92.0&#92:\输出查询结果
printf(&SQLite&#92,使用静态的sqlite3.在VS2010中;&quot.sqlite3\SQLite\SoftwareDesign&#92,转到lib,试了很多次都不成功.;SQLite\ /Common7\db open successfully.使用VS2010编译sqlite3.def &#47。在工程所在文件目录中会编译出sqlite3.exe在运行时需要相应的dll文件支持 ;&#47。 任务,在E;sqlite3\test1\t open db,ncols);n&添加-&%d&quot、“sqlite3ext.c”.使用VS2010编译sqlite3;n&SQLite&#92:&#92。(PS;
int a,命名为test1 ;++i) &#47:&#92,mspdbcore、空项目;n&
printf(&新建-&gt:&#92.在VS2010中编写简单程序,results[i])。这是因为动态的sqlite3。如果直接双击运行的话: 定义控制台应用程序的入口点,我的是E。将sqlite3;sqlite3。(这是动态的sqlite3.dll文件。8。PS;新建-&gt。
静态的sqlite3;Win32控制台应用程序;)、sqlite3。编译后所有代码都嵌入到宿主程序;demodb&quot.按F5键;
char **results。(必须将lib文件再添加到工程中)10,在sqlite-dll文件夹下会出现sqlite3,命名为test2 .exe link,我的是在E.将sqlite3;项目-&gt.将下载的sqlite-amalgamation-3071000:1.在VS2010中。7;IDE找到mspdb100,i,
sqlite3_free_table(results)。文件-&gt.lib.dll,&nrows,&results。在VS2010中编写简单程序。这时会生成静态的sqlite3;/
for(i=0,我的是G;n&quot。接下来要用到VS安装目录下的
sqlite3 *db = NULL。编译后只是将导出声明部分编译到宿主程序中, ncols.0&#92,运行成功;:sqlite3.exe可直接运行;VC&#92.lib和sqlite3.dll放到步骤2中的sqlite-dll文件夹下.Microsoft Visual Studio 10,右键test1工程;VisualStudio2010Workspace\
exit(1):这时,使用动态的sqlite3,然而按照上述无需多余操作即可成功。 任务二。
动态的sqlite3.(release版本比debug版本体积小。
二.dll在官网中也可下载到);现有项;test1&#92。文件-&没有此行代码,就会运行成功, sqlite3_errmsg(db));SoftwareDesign&#92,到工程所在文件目录下找到test1,从VS2010的安装目录下G;&#47,其生成的sqlite3.从VS2010的安装目录下Microsoft Visual Studio 10,&errmsg), &
sqlite3_close(db), &db);
int _tmain(int argc.zip 和sqlite-dll-win32-x86-3071000.将test1;SoftwareDesign&#92.dll在同一文件夹sqlite-dll下),它允许程序共享执行特殊任务所必需的代码和其他资源sqlite3,可直接运行
其他类似问题
为您推荐:
其他1条回答
下载一个sqlite for net的安装包,安装之后,然后引用DLL类库就可以用了。
sqlite的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 vs2010使用sqlite 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信