gpt4 book ai didi

c++ - Sqlite C++ ATTACH 内存数据库

转载 作者:太空宇宙 更新时间:2023-11-04 13:29:34 24 4
gpt4 key购买 nike

我尝试通过 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(仅使用带有 sqlite3_open_v2() 的 SQLITE_OPEN_URI 标志是不够的)

#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);

关于c++ - Sqlite C++ ATTACH 内存数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32052000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com