使用sqlite3.h将C程序连接到SQLite数据库

问题描述 投票:0回答:1

[已解决]
我所要做的就是打开我的“项目树”中的

sqlite3.c
文件像这样并将
sqlite3.h
包含在标题中。

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

sqlite3.c
sqlite3.h
sqlite3ext.h
附带的
amalgamation
zip 文件。

我找到了关于如何在代码块上使用库的本教程。这很简单,但后来我意识到 amalgamation zip 附带的文件都不是

.lib
.a
。我知道 sqlite 使用库,但是我上面列出的所有文件都是它们自己访问这些库的源代码文件。

如何编译 sqlite -> 在他们的网站上,他们有一些很好的信息:所有内容都包含在单个代码文件中,因此很容易放入较大的 C 或 C++ 程序的源代码树中。 他们指的是

sqlite3.c
文件。但是“放入源代码树”是什么意思?

在同一页面上,有一个部分编译命令行界面。我有点明白了要点...我还在这里找到了一个

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");
}



另外,在 Command Line Shell For SQLite 上,您可以找到有关如何将现有数据(从 C 程序外部创建,因为我仍然无法将数据库连接到我的 C 程序)传输到 .txt 文件的详细说明。知道这一点很高兴,但并不完全是我想要的。我可以使用大量的

fread
fprintf
等来使其工作......但这不如在程序中实现实际的数据库那么好。例如,如果稍后我想将我的
program.c
变成
program.exe
,我可以使用嵌入在
program.exe
中的数据库来实现。

c database sqlite
1个回答
2
投票

合并期望您将合并的所有文件放入项目文件夹中,在想要访问 sqlite 的源中添加

#include "sqlite3.h"
并使 sqlite3.c 成为项目的成员。

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

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

这里不需要图书馆,也不要尝试包含

sqlite3.c

© www.soinside.com 2019 - 2024. All rights reserved.