我在Devart TMSQuery.SQL中有一个带参数的查询。像
这样的东西select * from customers
where customer = :CustomerID
代码中的
// Delphi
sqlcustomer.ParamByName('CustomerID').asinteger := 4;
sqlcustomer.open;
我想调试并查看发送到服务器的确切sql命令,如果我尝试使用TMSQuery.sql我只有:CustomerID,而我想有这个:
select * from customers
where customer = 4
有没有一种快速的方法可以在不读取所有参数的情况下进行操作,并且可以手动重建查询?
当然,我有一个超过100个参数的非常大的查询,这就是我需要这个
的原因答案 0 :(得分:4)
发送到服务器的参数化查询的实际SQL语句永远不会包含参数值的文本表示。相反,它使用占位符字符,例如问号。在您的示例中,这将是select * from customers where customer = ?
这是在服务器上准备的,然后客户端在单独的调用中发送参数值。
答案 1 :(得分:3)
如果你正在使用Devart组件,那么他们有一个可能有用的TMSSQLMonitor组件。如果你通过odbc连接,你可以通过打开odbc选项卡上的跟踪来监控sql。
如果您正在使用其他组合,请说明。