2016-08-05 139 views
2

我不知道該怎麼辦,因爲我無法從我的SQL字符串中刪除冒號。 基本上我試圖使用下面的代碼在Sqlite中執行一個SQL字符串。Sqlite'無法識別的令牌:「:」C++

string database_name = "C:/Programs_C++/Project/Databases/dbase.db"; 

    string exec_string = "SELECT * FROM " + database_name + " WHERE type='table'"; 

    dbase_return=sqlite3_open_v2(database_name.c_str(),&db_handle,SQLITE_OPEN_READWRITE,NULL); 


dbase_return_tbl=sqlite3_get_table(db_handle,exec_string.c_str(),&result,&row,&column,&error_msg); 

    //But I get the error: unrecognized token: ":" ? 

我該如何解決這個問題?謝謝

+1

'exec_string'在這裏是不相關的,因爲你沒有使用它。 – immibis

+0

更正..我離開了一條線..謝謝 – domonica

+0

我有一個名爲dbase.db的數據庫..你能詳細說明嗎?我應該在這裏寫什麼?我可以看到我現在可能有這個錯誤。這種方式不能從D'base中選擇表格嗎?你知道我應該怎麼做嗎?謝謝 – domonica

回答

-1

它看起來像你有URI filenames接通 - 這可以在編譯時或運行時完成(如果你不知道它可能編譯時間)。

如果URI的文件名被開啓,您需要將文件名更改爲類似:

file:///C:/Programs_C++/Project/Databases/dbase.db 

編輯:如果您想將其關閉,我不認爲你可以爲這一個做呼叫(因爲呼叫將標誌作爲參數的一部分,只能將其打開)。相反,您可以通過調用

sqlite3_config(SQLITE_CONFIG_URI, 0) 

來全局禁用它,它告訴sqlite全局禁用URI文件名約定。注意:你只需要調用一次,它不是線程安全的,所以可能只是在程序的開始就放置它。

但是,在完全關閉URI文件名之前,如果URI文件名對您有用,可能值得研究。

+0

謝謝,我認爲你在那裏,但我不知道如何在我的代碼中使用SQLITE_USE_URI = 0。我不認爲你知道如何?我已經嘗試#define SQLITE_CONFIG_URI = 0在我的代碼頂部,沒有運氣 – domonica

+0

謝謝你..我剛剛也遇到了這一點。雖然它沒有解決這個問題,但它可能與我把sqlite3_config放在哪裏有關,所以我會繼續嘗試。我認爲你們正處於正確的軌道上,並且給了我一個新的考慮。 – domonica

1

您可以SELECT,而不是從一個數據庫。

首先打開數據庫(使用文件名),然後執行一個有效的SQL語句像

SELECT * FROM myTable; 

SELECT * FROM C:/Programs_C++/Project/Databases/dbase.db WHERE type = 'table'不是有效的SQL。如果你想獲得所有表格的列表,你不能這樣做。

相關問題