簡體   English   中英

在C ++中未使用INSERT語句調用SQLite3_exec回調

[英]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 我的問題是,當我運行插入語句時,代碼未到達回調函數。

如果使用sqlite3_exec運行插入命令,它是否不應該調用回調方法?

我應該使用其他的sqlite命令嗎?

謝謝!

如果該語句返回一些數據,則調用sqlite3_exec回調。 僅對於SELECT和某些PRAGMA語句會發生這種情況。

要獲取插入記錄的rowid,請調用sqlite3_last_insert_rowid

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM