c++ - 从 SQLite 中的准备语句获取原始 SQL 查询

标签 c++ sqlite

我正在使用 C++ 应用程序中的 SQLite (3.6.4)(使用标准 C api)。我的问题是:一旦准备好查询,使用 sqlite3_prepare_v2(),并使用 sqlite3_bind_xyz() 绑定(bind)参数 - 有没有办法获得包含原始字符串的字符串SQL 查询?

原因是当出现问题时,我想打印查询(用于调试 - 这是内部开发人员专用的测试应用程序)。

示例:

sqlite3_prepare_v2(db, "SELECT * FROM xyz WHERE something = ? AND somethingelse = ?", -1, &myQuery, NULL);
sqlite3_bind_text(myQuery, 1, mySomething);
sqlite3_bind_text(myQuery, 2, mySomethingElse);
// ....

// somewhere else, in another function perhaps
if (sqlite3_step(myQuery) != SQLITE_OK)
{
     // Here i'd like to print the actual query that failed - but I 
     // only have the myQuery variable
     exit(-1);
}

如果它还可以打印出绑定(bind)的实际参数,则加分。 :)

最佳答案

你可能想使用 sqlite3_trace

这将调用一个回调函数(您定义的),其中一个参数是准备好的语句(包括绑定(bind)参数)的 SQL 的 char *。

关于c++ - 从 SQLite 中的准备语句获取原始 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29121179/

相关文章:

java - 将 C++ 对象返回给 Java

c++ - 是否可以在 C++ 中创建对象数组队列?

android - 将现有的 sqlite 数据库与 android ADT 结合使用

python - 跳过 CSV 文件的第一行

c++ - 如何创建一个给定输入行的数组,其中输入行带有整数,其中第一个整数是长度?

c# - 使用 COM 互操作从非托管代码调用托管委托(delegate)

c++ - Glfw glDrawElements绘制三角形怪异

sql - 在CASE语句中重用SELECT语句的结果sqlite

android - 有人发现 SQLITE 'delete' 性能问题吗?

mysql - 查询以从 3 个不同的表中获取不同键的数据