我正在使用 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/