2012-12-12 89 views
1

我想通過傳遞URI來創建一個與SQLite共享的內存數據庫,如file:memdb1?mode=memory&cache=shared如何讓SQLite 3從URI數據庫處理內存模式?

下面的代碼看起來很簡單,以完成工作:

#include <iostream> 
#include <sqlite3.h> 

void main() 
{ 
    sqlite3 * db; 
    int flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_URI; 
    int returnCode = sqlite3_open_v2("file:memdb1?mode=memory&cache=shared", &db, flags, NULL); 

    if (returnCode == SQLITE_OK) 
    std::cout << "Success!" << std::endl; 
    else 
    std::cout << "Error: " << sqlite3_errmsg(db) << std::endl; 

    if (db) sqlite3_close(db); 
} 

然後我編譯它是這樣的:

$ g++ sample.cpp -lsqlite3 

而這就是我得到:

$ ./a.out 
Error: no such access mode: memory 

我已經嘗試了許多不同的配置flags(其中一些包括SQLITE_OPEN_MEMORY)而我一直無法得到這個簡單的程序來運行。我已經在Windows(使用SQLite 3.7.15的自定義版本)和Ubuntu(使用默認的apt-get軟件包,版本3.7.9)上嘗試過,但沒有成功。

有沒有人遇到過這一點,並發現了一個解決方案?

回答

1

原來我使用SQLite的版本錯誤。直到版本3.7.13之前,SQLite不支持共享緩存(請參閱changelog)。

相關問題