Delphi:如何获取使用参数时传递给服务器的查询

时间:2010-09-02 08:56:07

标签: sql-server delphi debugging devart

我在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个参数的非常大的查询,这就是我需要这个

的原因

2 个答案:

答案 0 :(得分:4)

发送到服务器的参数化查询的实际SQL语句永远不会包含参数值的文本表示。相反,它使用占位符字符,例如问号。在您的示例中,这将是select * from customers where customer = ? 这是在服务器上准备的,然后客户端在单独的调用中发送参数值。

答案 1 :(得分:3)

如果你正在使用Devart组件,那么他们有一个可能有用的TMSSQLMonitor组件。如果你通过odbc连接,你可以通过打开odbc选项卡上的跟踪来监控sql。

如果您正在使用其他组合,请说明。