Sqlite3源码部署

本文详细介绍了如何下载SQLite3并配置环境变量以便在命令行中使用,同时提供了在Windows 10环境下使用VS2013部署SQLite3源码的具体步骤。包括.lib和.def文件的生成、VS项目的配置及运行测试。
摘要由CSDN通过智能技术生成

     大二,大三花了不少时间来学习sqlite3的源码,之前一直是通过文档记录 没有写成博客。现在打算通过博客交流自己的成果,但需要强调的是,博客中可能会有个人理解偏差而出现出错误。

一:Sqlite3的下载:

  需要在官网上下载几个文件,下载最新版本的。

二:sqlite3配置使用

然后将sqlite-tools文件中的sqlite3.exe文件配置到环境变量中,然后就可以在命令框中调用sqlite3数据库了。

三:源码部署

部署准备

我要说的不是sqlite3的使用,是sqlite3源码的部署。

 部署环境:win10下的VS2013。

部署前需要.lib和.def两个文件,其中.lib是需要自己生成的,这里可以通过下面的方法生成。

1:进入VS2013目录拷贝lib.exelink.exe以及mspdb110.dll,目录为E:\VS2013\VC\bin

2:2. Sqlite目录中需要有sqlitesqlite3.hsqlite3.defsqlite3.dll

3:将以上所有文件放在sqlite目录中,通过cmd命令进入sqlite目录中,通过命令LIB /MACHINE:IX86 /DEF:sqlite3.def生成lib静态库文件。这里针对64位的pc命令会有所不同。如果是64位的系统的话,命令应该改为:LIB /MACHINE:X64/DEF:sqlite3.def. 值得一提的是,上述两种方法编译过程中,都需要针对你所用的pc位数进行匹配,即32位需要使用32位的库。64位则使用64位的库,这个如果弄错了,则无法生成lib库。我的pc上使用的是64位的操作系统。

完成上面步骤后就会生成.lib文件,然后就可以部署了。

  VS下的部署

 

创建一个win32的控制台应用程序,且是空项目:

然后引入下列文件

1.h的引入

    引入了.h才能使用类.

    首先在工程中引入.h文件,然后在文件中:#include "sqlite3.h"

这时需要配置引入.h文件的位置。引入方法如下

在创建的项目找到以下目录

      配置项目属性:c/c++     常规   附加包含目录  



2.lib文件的引入

     引入方法:

      项目  属性    链接器     输入     附加依赖项   sqlite3.lib



   编译:

      错误 1 fatal error LNK1104: 无法打开文件“sqlite3.lib” Sqlite 
     
想想错误原因:工程怎么知道sqlite3.lib在哪里?

      解决办法1:把lib烤到工程目录下(这种方法有时不可行):d:\工作\vc\sqlite\sqlite\  

      解决办法2:把lib拷到目录\lib目录下,然后设置:

       项目   属性    链接器      常规    附加库目录  


3dll库的引入

  只需sqlite3.dll拷到工程目录下。

这样就行了吗?可以运行Debug编译好的程序了吗?不行,如果要运行Debug下的程序,需要将sqlite3.dll也拷贝到Debug目录下。


4:运行效果测试

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

#include <sqlite3.h>

int main()
{
sqlite3 *db = NULL;
int result;
result = sqlite3_open("test.db", &db);
if (SQLITE_OK != result)
{
  printf("Create/Open test.db error! \n");
}
printf("Create/Open test.db success!! \n");


const char *sqlStr1 = "create table table2(sid integer primary key not null,age string);";
result = sqlite3_exec(db, sqlStr1, 0, 0, 0);
if (SQLITE_OK != result)
{
printf("create table table1 error! \n");
return 0;
}
printf("create table table1 success! \n");
const char* sqlStr2 = "insert into table1() values(1,'name1');";
result = sqlite3_exec(db, sqlStr2, 0, 0, 0);
if (SQLITE_OK != result)
{
printf("insert table table1 error! \n");
return 0;
}
printf("insert table table1 success! \n");
sqlite3_close(db);
return 0;
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值