• 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 
    #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;
    
    }
  • 相关阅读:
    Android9 MTK平台编译 更改systemui 音量条(二)
    基于QT使用OpenGL,加载obj模型,进行鼠标交互
    word文档怎么翻译成中文?不妨试试这几个方法
    Linux系统调用及测试
    arcgis中坡向计算工作原理说明
    服务器快速搭建AList集成网盘网站【宝塔面板一键部署AList】
    通过redis学网络(1)-用go基于epoll实现最简单网络通信框架
    自动化测试如何进阶?本文从4个方面带你系统进阶自动化涨薪5k...
    顶级旗舰新机皇Mate 60 RS发布,保时捷设计再次回归
    QT With OpenGL(泛光)(Bloom)
  • 原文地址:https://blog.csdn.net/eeeeety6208/article/details/126715552