当前位置:  开发笔记 > 编程语言 > 正文

sqlite准备好的语句 - 如何调试

如何解决《sqlite准备好的语句-如何调试》经验,为你挑选了1个好方法。

我正在编写一些使用sqlite3库的c ++代码.我正在使用一个准备好的语句,我在运行时绑定了一个变量.

如何在绑定后检查语句的SQL查询?

例如,下面的代码不返回一行.当使用预制字符串和sqlite3_exec时,我得到了我期望的结果.

sqlite3_stmt *statement;
const char *query = "SELECT * FROM foo WHERE (name='?');";
sqlite3_prepare_v2(db, query, strlen(query), &statemtnt, NULL);
sqlite3_bind_text(statement, 1, "bar", -1, SQLITE3_STATIC);
int result = sqlite3_step(statement);
// expected: result = SQLITE_ROW
// actual: result = SQLITE_DONE

编辑:正如费迪南德在下面所述,上面查询中的问题是?周围的引号.但是,对于将来,我仍然想知道如何检查sqlite3_stmt以查找将要执行的实际查询.



1> Ferdinand Be..:

绑定后SQL查询不会更改 - 您的变量未插入SQL字符串或任何内容.

除了Neil所说的,还要在周围放下引号?占位符:

"SELECT * FROM foo WHERE name = ?"

否则SQLite不会替换问号,但会将其视为字符串"?".

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有