gpt4 book ai didi

c++ - SQLite3_exec 回调未在 C++ 中使用 INSERT 语句调用

转载 作者:行者123 更新时间:2023-11-30 04:11:41 25 4
gpt4 key购买 nike

我的目标是将一列插入到 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");
}
}

我的回调实现如下(注意是静态私有(private)类方法):

int SQLiteHelper::WriteCallback(void *NotUsed, int argc, char** argv, char** azColName)
{
////do some stuff
}

我知道我可能会使用 void* NotUsed 回调参数来返回数据,我很确定它映射到 (void*)data 来自sqlite3_exec() 函数调用。我遇到的问题是,当我运行插入语句时,代码没有到达回调函数。

如果您使用 sqlite3_exec 运行插入命令,它不应该调用回调方法吗?

我应该使用不同的 sqlite 命令吗?

谢谢!

最佳答案

如果语句返回一些数据,将调用 sqlite3_exec 回调。这只会发生在 SELECT 和一些 PRAGMA 语句中。

要获取插入记录的rowid,调用sqlite3_last_insert_rowid .

关于c++ - SQLite3_exec 回调未在 C++ 中使用 INSERT 语句调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20156302/

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