2013-11-25 28 views
0

使用C API使用SQLite(V 3.7.13),我試圖列出當前連接的所有附加的數據庫:什麼時候SQLite語句「PRAGMA database_list;」返回一個空的結果集?

sqlite3_stmt* pCompiledSql; 
if(SQLITE_OK == sqlite3_prepare_v2(database, "PRAGMA database_list;", -1, &pCompiledSql, nullptr)) 
{ 
    while(SQLITE_ROW == sqlite3_step(pCompiledSql)) 
    { 
    const char* pName = reinterpret_cast<const char*>(sqlite3_column_text(pCompiledSql, 1)); 
    const char* pFile = reinterpret_cast<const char*>(sqlite3_column_text(pCompiledSql, 2)); 
    // Using pName and PFile... 
    } 
} 

數據庫是一個句柄到現有的數據庫與多個數據庫連接。相同的代碼可以很好地處理像「SELECT * FROM testtable;」這樣的語句

但是,使用編譯指示調用第一步調用將立即返回SQLITE_DONE。

我很確定我正在開發一些顯而易見的東西,但沒有太多的SQLite經驗我現在被卡住了......這裏可能會出現什麼問題?

+1

該代碼適用於我。 –

+0

感謝您確認,它幫助了很多。所以如果上面的代碼是OK的,那麼問題一定是在數據庫中的某個地方。無論如何,我必須繼續前進,找到一種解決方法(我附加它們時保存了附加數據庫的源路徑和名稱)。再次感謝您的努力。 – pangabiMC

回答

0

sqlite3_prepare_v2的第四個參數是指向語句指針的指針,所以它不能是pCompiledSql而是&pCompiledSql

您的編譯器應該已經向您發出警告。

+0

我設法弄糟了問題中的代碼,我原來的代碼確實有&。所以這不是問題。不過謝謝你的嘗試! – pangabiMC

相關問題