作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要 Hook 程序的日志记录功能并获取它的日志记录参数,它使用 sqlite3_prepare_v2 -> sqlite3_bind_xxx -> sqlite3_step 函数。我想知道是否有可能从 sqlite3_stmt 中获取 params 和 sql 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/
我是一名优秀的程序员,十分优秀!