当Poco::Data创建SQL语句并将其发送到数据库(如SQLite)时,无论如何都可以看到生成了什么SQL ?甚至在发送之前?例如,在下面的代码(类似于一个Poco提供的示例版本1.6.1 Poco/Data/samples/TypeHandler/src/TypeHandler.cpp)中,无论如何都可以看到为INSERT语句生成的SQL ?即使有一个InvalidSQLException抛出最终?
using namespace Poco::Data::Keywords;
using Poco::Data::Session;
using Poco::Data::Statement;
int main() {
Person aperson("firstName", "lastName", 1234);
Poco::Data::SQLite::Connector::registerConnector();
Session session("SQLite", "sample.db");
session << "DROP TABLE IF EXISTS Person", now;
session << "CREATE TABLE Person (Name VARCHAR(30), LastName VARCHAR(30), ID INTEGER(10))", now;
session << "INSERT INTO Person VALUES (?,?,?)", use(aperson), now;
return 0;
}
我不确定SQLite是否有可能,因为在绑定时,SQLite API希望准备占位符字符串,然后绑定数据绑定调用sqlite3_bind*()。ODBC的工作方式不同,我们可以打印出后端执行的本地SQL字符串。
db浏览器工具有选项执行sql。(http://sqlitebrowser.org/)