windows下sqlite的.dll生成.lib和c编程

在windows下想使用c程序中使用sqlite,需要使用静态库.lib文件,官网上只提供sqlite3.dll和sqlite3.def文件,需要.lib才能使用。所以自己生成.lib文件。


1.在官方网站sqlite.org下载页面下载sqlite-dll-win32-x86-3071401.zip (298.71 KiB) 。

解压到某一文件夹下,如c:\sqlite3.

2.打开cmd命令行,执行

>cd c:\sqlite3

c:\sqlite3> lib /DEF:sqlite3.def

运行成功会有如下打印。


Microsoft (R) Library Manager Version 6.00.8168

Copyright (C) Microsoft Corp 1992-1998. All rights reserve


LIB : warning LNK4068: /MACHINE not specified; defaulting
   Creating library sqlite3.lib and object sqlite3.exp

注意:如果不成功。如果提示lib不是内部或者外部命令,则在vc的安装目录下拷贝 vc98/bin/lib.exe 和link.exe到sqlite3目录下。如果提示缺少mspdb60.dll或者其他文件,则相应的找到拷贝到sqlite3目录下即可。


然后就是在相应的代码里引用了,如下:

我使用的是code blocks环境,在settings里打开compiler和debugger里找到linker settings 增加编译出来的sqlite3.lib库。

然后下载sqlite3的源码包里,拷贝其中的.h文件到源码目录下包含即可条用api了。

例子:

在目录下新建main.c,然后输入代码,例子做了简单的连接数据库(创建)->创建表->插入一条数据->查询显示。

#include <stdio.h>
#include "sqlite3.h"

int main()
{
    int rc = 0;
    int i = 0;
    sqlite3 *db = NULL;
    char *sql = NULL;
    char *err = NULL;
    rc = sqlite3_open("sqlite3test.db",&db);
    if(rc)
    {
        printf("\r\nopen database sqlite3test.db fail!\r\nERR: %s", sqlite3_errmsg(db));
        sqlite3_close(db);
        return -1;
    }
    printf("\r\nopen database sqlite3test.db ok!");


    sql = "create table stu(id int PRIMARY KEY,name text);";
    rc = sqlite3_exec(db, sql, NULL, NULL, &err);
    if(SQLITE_OK != rc)
    {
        if(NULL != err)
        {
            printf("\r\nSQL1 ERR:%s", err);
            sqlite3_free(err);
            return -1;
        }
    }

    sql = "insert into stu values (1, 'zhangsan');";
    rc = sqlite3_exec(db, sql, NULL, NULL, &err);
    if(SQLITE_OK != rc)
    {
        if(NULL != err)
        {
            printf("\r\nSQL2 ERR:%s", err);
            sqlite3_free(err);
            return -1;
        }
        printf("\r\n error insert");
    }

    sql = "select * from stu;";
    char **result;
    int nrow = 0, ncolumn = 0;
    rc = sqlite3_get_table(db, sql, &result, &nrow, &ncolumn, &err);
    if(SQLITE_OK != rc)
    {
        if(NULL != err)
        {
            printf("\r\nSQL3 ERR:%s", err);
            sqlite3_free(err);
            return -1;
        }
        printf("\r\n error select");
    }

    printf("\r\nrow: %d ,column: %d", nrow, ncolumn);

    for(i=0;i<(nrow+1)*ncolumn;i++)
    {
        printf("\r\nresult[%d] : %s", i, result[i]);
    }

    sqlite3_free_table(result);

    sqlite3_close(db);
    return 0;

}




  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值