首页 > 解决方案 > 将 sqlite 连接到 C 程序

问题描述

[已解决]
我所要做的就是像这样sqlite3.c打开“项目树”中的文件并包含在标题中。sqlite3.h

我正在尝试将我的 C 程序(使用代码块)连接到数据库。我已经从sqlite 网站下载了所有关键文件,例如shell.csqlite3.csqlite3.hsqlite3ext.h.

我发现this tutorial on how to use libraries on code blocks。这很简单,但后来我意识到合并zip 附带的文件都不是.lib.a. 我知道 sqlite 使用库,但我上面列出的所有文件都是可以自己访问这些库的源代码文件。

如何编译 sqlite -> 在他们的网站上,他们有一些很好的信息:所有内容都包含在单个代码文件中,因此很容易放入更大的 C 或 C++ 程序的源代码树中。他们的意思是sqlite3.c文件。但是他们所说的“进入源代码树”是什么意思?

在同一页面上,有一节Compiling The Command-Line Interface。我有点明白要点......我还在sqlite shell 这里找到了一个教程,所以我下载了 shell,现在我可以创建/修改数据库了。虽然我觉得我已经非常接近让它在我的 C 程序上运行,但我仍然无法将源文件或 shell 中的任何数据库实现到我的代码中。
有什么想法吗?

#include <stdio.h>      // printf
#include <sqlite3.h>    // SQLite header (from /usr/include)

int main()
{
    sqlite3 *db;        // database connection
    int rc;             // return code
    char *errmsg;       // pointer to an error string

    /*
     * open SQLite database file test.db
     * use ":memory:" to use an in-memory database
     */
    rc = sqlite3_open(":memory:", &db);
    if (rc != SQLITE_OK) {
        printf("ERROR opening SQLite DB in memory: %s\n", sqlite3_errmsg(db));
        goto out;
    }
    printf("opened SQLite handle successfully.\n");

    /* use the database... */

out:
    /*
     * close SQLite database
     */
    sqlite3_close(db);
    printf("database closed.\n");
}



此外,在SQLite 的命令行 Shell上,您可以找到有关如何将现有数据(从 C 程序外部创建,因为我仍然无法将数据库连接到我的 C 程序)传输到 .txt 文件的详细说明。很高兴知道这一切,但不完全是我想要的。fread我可以使用很多等来使它工作fprintf……但这不如在您的程序中实现一个实际的数据库那么好。例如,如果以后我想将 myprogram.c变成一个,program.exe我可以使用嵌入在program.exe.

标签: csqlite

解决方案


合并希望您将合并的所有文件放在项目文件夹中,添加#include "sqlite3.h"到要访问 sqlite 的源中,并使 sqlite3.ca 成为项目的成员。

假设一个 gcc 命令行编译器,你应该这样做:

gcc main.c sqlite3.c -lpthread -o foo

这里不需要库,也不要尝试包含sqlite3.c.


推荐阅读