• 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;
    
    }
  • 相关阅读:
    【机器学习周志华】读书笔记 P1 机器学习基本概念知识
    软件流程和管理(四):PMP & Stakeholder Management
    Flink K8s Operator 测试验证
    流向算法(FDA)(Matlab代码实现)
    Python函数和代码复用
    深入剖析多重背包问题(上篇)
    Centos一键安装、切换各版本JDK
    34、CSS进阶——行高的取值以及常见的长度单位
    智慧医院的建设包括哪些方面?医院数字孪生信息化建设标准方案
    309. 最佳买卖股票时机含冷冻期
  • 原文地址:https://blog.csdn.net/eeeeety6208/article/details/126715552