Tag: sqlite

在C ++中使用SQLite:对象函数作为回调

所以,我正在开展一个侧面项目,以保持我的c ++技能新鲜(自从我用c ++完成工作已经很多年了)。 我正在研究我将使用SQLite的东西。 我有一个SQLite代码的包装器。 我注意到的一件事是SQLite在其sqlite3_exec(…)函数中使用了c风格的回调函数。 我想让回调函数成为一个对象方法,因为我希望它能够修改对象变量,但我不确定如何准确地执行此操作。 我已经检查了stackoverflow上的其他类似问题,但没有任何帮助。 这是我如何声明我的包装类: class DBAdapter { private: sqlite3* db; int getUserRecords(std::string); std::vector records; int callbackSel(void*, int , char**, char**); public: DBAdapter(); ~DBAdapter(); int open(std::string); void close(); int insertRecord(); int deleteRecord(); int getNumUserRecords(); }; 以下是我在getNumUserRecords中尝试使用回调(callbackSel)的方法: int DBAdapter::getUserRecords(std::string name) { std::string sql = “SELECT” + name + ” from USERS”; char* […]

SQLite3和多个进程

当多个进程访问单个SQLite数据库文件时,如何确保正确性?

将内存数据库保存到磁盘

我在c ++中通过sqlite创建了一个数据库。 db已在内存中创建(使用文件名中的“:memory:”参数),以便具有非常快速的行为。 数据库由以下行创建: sqlite3* mem_database; if((SQLITE_OK == sqlite3_open(“:memory:”, &mem_database)){ // The db has been correctly created and // I can do some stuff with it. } sqlite3_close(mem_database); 我的问题是:如何将内存数据库写入磁盘? (当然是通过c / c ++)。 我读了一些关于ATTACH和DETACH sqlite命令的内容,但我可以让它们只使用sqlite交互式shell(而不是c / c ++代码)。 映入眼帘。

如何在sqlite3中打开内存数据库文件

我在一个无法访问磁盘的系统上。 我的C程序在内存中有一个有效的小型sqlite3文件(通过网络接收)的内容。 我想使用sqlite3的C API打开并访问此文件(只读很好)。 我该怎么做呢? 我知道我可以创建一个空的内存数据库 sqlite3_open(“:memory:”, &foo) 但有没有办法打开我现有的数据库? 我没有创建ram磁盘的权限,但也许是沿着这些线路的东西? 谢谢。

我可以在sqlite3中使用表名的参数吗?

我有一些奇怪的感觉abour sqlite3 参数 ,我想透露给你。 这是我的查询和失败消息: #query ‘SELECT id FROM ? WHERE key = ? AND (userid = ‘0’ OR userid = ?) ORDER BY userid DESC LIMIT 1;’ #error message, fails when calling sqlite3_prepare() error: ‘near “?”: syntax error’ 在我的代码中它看起来像: // Query is a helper class, at creation it does an sqlite3_preprare() Query q(“SELECT id […]