0
我正在关注this示例程序,但我将使用SQLite3而不是MySQL。什么原因导致“声明中没有表”消息?
起初我需要检查user_version
以查看表格是否已创建并且是最新的。
这是我到目前为止的代码:
#include <stdio.h>
#include <dbi/dbi.h>
#define CONF_PATH "./"
#define DB_FILE "db.sqlite3"
int main() {
dbi_conn conn;
dbi_result result;
dbi_inst instance;
long ver = 0;
dbi_initialize_r(NULL, &instance);
conn = dbi_conn_new_r("sqlite3", instance);
dbi_conn_set_option(conn, "sqlite3_dbdir", CONF_PATH);
dbi_conn_set_option(conn, "dbname", DB_FILE);
dbi_conn_set_option(conn, "encoding", "UTF-8");
if (dbi_conn_connect(conn) < 0) {
printf("Could not connect. Please check the option settings\n");
} else {
result = dbi_conn_query(conn, "PRAGMA user_version;");
if (result) {
if (dbi_result_next_row(result)) {
ver = strtol(dbi_result_get_string(result, "user_version"), NULL, 10);
}
dbi_result_free(result);
}
printf("DB Ver. %ld\n", ver);
dbi_conn_close(conn);
}
dbi_shutdown_r(instance);
return 0;
}
一切正常,因为它应该,但我得到一个奇怪的输出:
no tables in statement !
DB Ver. 1
第二行确定。我在代码的第33行打印它。第一个怎么样?很明显,有在声明中没有桌子,但我不打印,不希望此消息...
我的系统是:
Debian的SID
GCC(Debian的4.8.2 -14)4.8.2
libdbi1 0.9.0-1
libdbd-sqlite3的0.9.0-2
我建立使用gcc -ldbi -ldl -std=c11 -Wall -Werror dbtest.c -o dbtest
程序。
所以这应该是一个错误。正如我所看到的其他'printf'被评论。我会看看我能做些什么。谢谢! – core1024