簡體   English   中英

SQLite C ++ ATTACH內存數據庫

[英]Sqlite c++ ATTACH memory database

我嘗試像這樣通過c ++ api將內存數據庫附加到現有的數據庫連接:

void InMemoryDbtest(){
    sqlite3 *db;
    int rc = sqlite3_open("E:/VS_workspace/ConsoleSQLITE/Debug/TPCH.sqlite", &db);
    if (rc){
        cout << "nie moge otworzyc bazy danych ";}
    else{
        cout << "otwarcie bazy ---- udalo sie\n";}
    char *err;

sqlite3_exec(db, "ATTACH DATABASE 'file::memory:?cache=shared' as pom",0,0,&err);

    cout << "error" << err << endl;
    string q = "create table pom.bla as select n_name from NATION ";
    sqlite3_exec(db, q.c_str(), 0, 0, &err);
    cout << "error" << err << endl;
}

我收到2條錯誤消息”

無法打開數據庫:文件:內存和未知數據庫pom

有任何想法嗎? 當我嘗試在sqlite控制台中附加數據庫時,一切正常

感謝您的建議,解決方案是:

首先:將sqlite3.c中的SQLITE_USE_URI標志設置為1而不是0(僅將SQLITE_OPEN_URI標志與sqlite3_open_v2()配合使用是不夠的)

#ifndef SQLITE_USE_URI
# define  SQLITE_USE_URI 1
#endif

那么您可以將uri與所有sqlite3函數一起使用。

Windows的正確uri是:

int rc2 = sqlite3_open("file:///E:/VS_workspace/ConsoleSQLITE/Debug/TPCH.sqlite", &db);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM