gpt4 book ai didi

c++ - 调用 sqlite3_step() 时从 sqlite3_stmt 获取值

转载 作者:行者123 更新时间:2023-11-30 03:59:20 26 4
gpt4 key购买 nike

我需要 Hook 程序的日志记录功能并获取它的日志记录参数,它使用 sqlite3_prepare_v2 -> sqlite3_bind_xxx -> sqlite3_step 函数。我想知道是否有可能从 sqlite3_stmt 中获取 paramssql string

这是我的测试代码:

#include <stdio.h>

#include "sqlite3.h"

int main() {
sqlite3* db;
sqlite3_open("test.db", &db);
sqlite3_exec(db, "CREATE TABLE test_table(name text, age integer, info text)", 0, 0, 0);

sqlite3_stmt* stmt;
sqlite3_prepare_v2(db, "INSERT INTO 'test_table' (name, age, info) VALUES (?, ?, ?);", -1, &stmt, 0);

sqlite3_bind_text(stmt, 1, "aabb", 4, 0); // set name
// sqlite3_bind_int(stmt, 2, 3423);
// sqlite3_bind_text(stmt, 3, "ccdd", 4, 0);

sqlite3_step(stmt);

char* txt = (char*)sqlite3_column_text(stmt, 0); // try to get the name("aabb") from stmt
printf("txt: %s\n", txt); // it prints "txt: (null)"

}

我尝试了 sqlite_column_xxxx 函数,它打印 null。所以我尝试使用内部结构来解码stmt,实际上它是Vdbe的指针,但是Vdbe结构因版本而异,旧版本内部有一个“Parse”指针,但最新版本没有。所以我放弃了使用内部结构。

还有其他方法可以从 stmt 获取参数和 sql 字符串吗?

最佳答案

必须检查所有函数的返回值。(如果出现错误,请使用 sqlite3_errmsg 获取有用的消息。)

sqlite3_bind_text的第五个参数不得为零。有关允许的值,请参阅文档。

SQL 字符串可通过 sqlite3_sql 获得.

无法读取参数的值。

关于c++ - 调用 sqlite3_step() 时从 sqlite3_stmt 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26969752/

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