2012-02-08 43 views
0

編寫一個程序從sqlite數據庫檢索數據不會返回任何結果,儘管在sqlite cli中返回預期結果的查詢完全相同。Sqlite通過C沒有返回的結果,其中普通的sqlite是

#include <stdio.h> 
#include <sqlite3.h> 

sqlite3 * db; 
sqlite3_stmt * locationgetint; 

int locationInt(char * string){ 
    sqlite3_bind_text(locationgetint,1,string,-1,SQLITE_STATIC); 
    sqlite3_step(locationgetint); 
    int output = sqlite3_column_int(locationgetint,0); 
    sqlite3_clear_bindings(locationgetint); 
    sqlite3_reset(locationgetint); 
    return output; 
} 

int main(){ 
    sqlite3_open("db.sqlite3",&db); 
    sqlite3_prepare_v2(db,"SELECT id FROM pfs WHERE name='?';",-1,&locationgetint,0); 
    printf("%d\n",locationInt("Milky Way")); // Prints 0 
    return 0; 
} 

但SQLite的CLI版本:

sqlite> SELECT id FROM pfs WHERE name='Milky Way'; 
625 
sqlite> 
+3

我認爲你不需要SQL語句中的引號,即'WHERE name =?'。 – Sjoerd 2012-02-08 12:14:56

+0

上次我把它們去掉了,我弄壞了一些東西,所以我決定把它們留在 – 2012-02-08 12:18:47

+0

哇,他是對的......上次我刪除那些引發了我的東西的引號是奇怪的原因。添加一個問題,我會檢查它謝謝sjoerd :) – 2012-02-08 12:24:18

回答

0

正如Sjoerd說,去掉引號工作。