使用TSQLMonitor进行跟踪不起作用

3

我想使用TSQLMonitor组件,但一直没有成功...

在我的OnTrace事件中,我有以下代码:

procedure TForm1.SQLMonitor1LogTrace(Sender: TObject; TraceInfo: TDBXTraceInfo);
begin
  memo1.Lines.Add(traceinfo.message);
end;

这个方法也可以,但是在SQL命令中,“我的”值用问号(“?”)表示,我不知道为什么!看一个例子:

INTERBASE - isc_start_transaction
INTERBASE - isc_dsql_allocate_statement
**update "CDSUBPRODUTOS"  set
 "DATAINCLUSAO" = ?
where
 "CDSPRCODIGO" = ? and
 "DATAINCLUSAO" = ? and
 "DATAALTERACAO" is null and
 "CODUSUARIOALTERACAO" = ? and
 "CDSPRCODGRUPO" = ? and
 "CDSPRSITUACAO" = ? and
 "CDSPRDESCRICAO" = ? and
 "CDSPRMEDIDA" = ? and
 "CDSPRVALOR" = ? and
 "CDSPRUTILIZARFORMACAOPRECO_SN" = ?**

INTERBASE - isc_dsql_prepare
INTERBASE - isc_dsql_sql_info
INTERBASE - isc_portable_integer
INTERBASE - isc_dsql_describe_bind
INTERBASE - SQLDialect = 3
INTERBASE - isc_dsql_execute
INTERBASE - isc_dsql_free_statement
INTERBASE - isc_dsql_free_statement
INTERBASE - isc_commit_transaction

我希望这些符号能够被正确的值所替换(在本例中是更改后的值)。我正在使用Delphi XE和Firebird 2.5。
如果有人能帮助我,我将不胜感激!拥抱!

3
你是否使用参数化查询?如果我记得正确的话,你确实可以看到没有参数值的 SQL。参数值是不是稍后在日志中出现? - Jan Doggen
谢谢Jan Doggen,但我不使用参数。我制作了一个简单的示例,只是放置了GRID、NAVIGATOR、SQLMonitor和MEMO来获取指令,结果如上所示... - Lucas Medeiros
看到我没有正确检查ClientDataSet标志,因为这只是一个简单的测试... =/ - Lucas Medeiros
我已经在DropBox上发布了简单的代码:http://dl.dropbox.com/u/52496155/TestSQLMonitor.zip - Lucas Medeiros
1个回答

2
从互联网搜索结果来看,TSQLMonitor似乎不能显示参数值。甚至有一个2002年的Quality Central问题#1358请求支持参数。我也找不到任何设置或属性。

报告已标记为已修复,但如果您在解决方案的注释中看到“fixed”,实际上这是不准确的 - 建议改用dbxtrace驱动程序。 - Sertac Akyuz
我不使用参数,这是一个简单的查询...我已经在SQLServer上进行了测试,但结果是一样的!=( 如果SQLMonitor永远不会返回“值”,那么最好的方法是什么?你知道吗? - Lucas Medeiros

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接