SQLite3_exec回调未使用c++中的INSERT语句调用
SQLite3_exec callback not called with INSERT statement in c++
我的目标是在SQLite表中插入一列,然后返回条目,以便获得主键值。我有以下代码为我执行通用插入语句:
int SQLiteHelper::ExecuteWriteStatement(Platform::String^ statement)
{
char* zErrMsg;
int rc;
LPCWSTR input = statement->Data();
char sql[MAX_PATH + 1];
memset(sql, 0, sizeof(sql));
WideCharToMultiByte(CP_UTF8, 0, input, -1, sql, sizeof(sql), NULL, NULL);
const char* data = "Callback function called";
rc = sqlite3_exec(m_db, sql, WriteCallback, (void*)data, &zErrMsg);
if(rc != SQLITE_OK)
{
OutputDebugString(L"Failed to Write to database");
sqlite3_free(zErrMsg);
}
else
{
OutputDebugString(L"Succesfully wrote to database");
}
}
我的回调实现如下(注意它是一个静态私有类方法):
int SQLiteHelper::WriteCallback(void *NotUsed, int argc, char** argv, char** azColName)
{
////do some stuff
}
我知道我可能会使用void* NotUsed
回调参数来返回数据,我确信它会映射到sqlite3_exec()函数调用中的(void*)data
。我遇到的问题是,当我运行insert语句时,代码无法到达回调函数。
如果使用sqlite3_exec运行insert命令,它不应该调用回调方法吗?
我应该使用不同的sqlite命令吗?
谢谢!
如果语句返回一些数据,就会调用sqlite3_exec
回调。这种情况只能发生在SELECT
和某些PRAGMA
语句中。
要获取插入记录的rowid,请调用sqlite3_last_insert_rowid。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- .cpp和.h文件中的模板专用化声明
- 反向给定链表中的K节点
- 正在查找文档以获得PS4平台的C++中的设备信息
- enum是C++中的宏变量还是整数变量
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 将字符串存储在c++中的稳定内存中
- 文本文件中的单词链表
- 递归函数计算序列中的平方和(并输出过程)
- 如何从C++中的依赖类型中获得它所依赖的类型
- C++STL中set的'insert'函数的原理是什么?
- 如何使用 mongo-cxx-driver 的 **insert** 函数将包含静态数据的多维数组插入到数据库中
- STL中set的insert函数中为什么存在位置参数
- SQLite3_exec回调未使用c++中的INSERT语句调用
- 运算符 [] 和 insert() 函数在 C++ 映射中的行为方式不应该相同吗?
- 请求“x”中的成员“insert”,该成员属于非类类型
- 使用C++的SQLite中的INSERT INTO命令不起作用
- 在链表的insert last函数中交换两行时出错
- 为什么Vector中的Erase和Insert函数使迭代器失效?
- c++中vector的insert和emplace有什么区别?