[英]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.