Sqlite c++ ATTACH内存数据库
Sqlite c++ ATTACH memory database
我尝试通过c++ api将内存中的db连接到现有的db连接:
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 sien";}
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控制台附加db时,一切都很好
感谢您的建议,解决方案是:
首先:在sqlite3.c中设置SQLITE_USE_URI标志为1而不是0(仅仅使用SQLITE_OPEN_URI标志与sqlite3_open_v2()是不够的)
#ifndef SQLITE_USE_URI
# define SQLITE_USE_URI 1
#endif
那么你可以在所有sqlite3函数中使用uri。
适合Windows的uri是:
int rc2 = sqlite3_open("file:///E:/VS_workspace/ConsoleSQLITE/Debug/TPCH.sqlite", &db);
相关文章:
- 将字符串存储在c++中的稳定内存中
- 查询SQLite数据库中的日期
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- Win32编译器选项和内存分配
- 当vector是tje全局变量时,c++中vector的内存管理
- 带内存和隔离功能的SQLite
- LMDB:在有限的内存系统中打开大型数据库
- sqlite3数据库加载到内存c++并选择perfomance
- 京都机柜TreedB:内存使用情况无法控制,直到关闭数据库为止
- 将 SQL 数据库移动到内存中
- 如何在内存数据库中创建多个SQLite
- SQLite 备份内存数据库 C++
- 寻找具有某些品质的完全内存数据库
- c++线程数据库类内存混淆
- 如何使用基于现有文件数据库的模式创建内存中数据库
- 是否可以以只读模式连接到内存中的sqlite数据库?
- 具有发布、订阅和查询筛选器的内存数据库
- 我应该在内存或数据库中存储列表,我应该建立一个类来连接到DB
- Sqlite c++ ATTACH内存数据库
- 使用内存中的SQLite数据库在C++和C#之间共享数据