我正在尝试将我的 C 程序(使用代码块)连接到数据库。我已经从 sqlite 网站 下载了所有关键文件,例如 shell.c
、
sqlite3.c
、sqlite3.h
和 sqlite3ext.h
附带的 amalgamationzip 文件。
我找到了关于如何在代码块上使用库的本教程。这很简单,但后来我意识到 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");
}
合并期望您将合并的所有文件放入项目文件夹中,在想要访问 sqlite 的源中添加
#include "sqlite3.h"
并使 sqlite3.c 成为项目的成员。
假设使用 gcc 命令行编译器,你应该这样做:
gcc main.c sqlite3.c -lpthread -o foo
这里不需要图书馆,也不要尝试包含
sqlite3.c
。