2014-02-05 43 views
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程序。

回答

相关问题