首页 > 数据库 >使用TUniSQLMonitor监视SQL语句执行的耗时

使用TUniSQLMonitor监视SQL语句执行的耗时

时间:2022-12-09 14:36:13浏览次数:52  
标签:begin end Sender UniSQLMonitor TObject 耗时 procedure SQL TUniSQLMonitor

//代码来自官方论坛
type TUniSqlMonitorEx = class(TUniSqlMonitor) private FExecuteDuration: Cardinal; FFinalEvent: Boolean; protected procedure InternalSQLExecute(Obj: TObject; const SQL: string; Params: TDAParams; const Caption: string; BeforeEvent: boolean; var MessageID: Cardinal); override; public property ExecuteDuration: Cardinal read FExecuteDuration; Property IsFinalEvent: Boolean read FFinalEvent; end; TForm1 = class(TForm) UniConnection1: TUniConnection; UniQuery1: TUniQuery; OracleUniProvider1: TOracleUniProvider; procedure FormCreate(Sender: TObject); private UniSQLMonitor: TUniSqlMonitorEx; procedure onSQL(Sender: TObject; Text: String; Flag: TDATraceFlag); { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} { TUniSqlMonitorEx } procedure TUniSqlMonitorEx.InternalSQLExecute(Obj: TObject; const SQL: string; Params: TDAParams; const Caption: string; BeforeEvent: boolean; var MessageID: Cardinal); begin if BeforeEvent then begin FFinalEvent := False; FExecuteDuration := GetTickCount; end; inherited; if not BeforeEvent then begin FFinalEvent := True; FExecuteDuration := (GetTickCount - FExecuteDuration); FOnSQLEvent(Obj, SQL, tfQExecute); end; end; procedure TForm1.FormCreate(Sender: TObject); begin UniSQLMonitor := TUniSqlMonitorEx.Create(Application.Owner); UniSQLMonitor.OnSQL := Self.onSQL; UniQuery1.Execute; end;
procedure TForm1.onSQL(Sender: TObject; Text: String; Flag: TDATraceFlag);
begin
  if (Sender is TUniQuery) and (Flag = tfQExecute) then
  begin
    if UniSQLMonitor.IsFinalEvent then
      ShowMessage(FloatToStr(UniSQLMonitor.ExecuteDuration / 100))
    else
      FCurrentSQL := Text;
  end
  else if (Flag = tfError) then
      ShowMessage(FCurrentSQL + ', Error:' + Text);
end;

 

标签:begin,end,Sender,UniSQLMonitor,TObject,耗时,procedure,SQL,TUniSQLMonitor
From: https://www.cnblogs.com/sdlz/p/16968858.html

相关文章

  • SQL一文入门助记
    什么是SQLSQL(StructuredQueryLanguage)是用于操作数据库的语言。一个博客有许多网站,一个游戏要储存许多游戏的账号密码,这些都离不开数据库操作。关系型数据库与NoSQL......
  • 关于 SQL navigation function 的一点使用记录
    来自于SQL2011对窗口函数的增强,新添加了叫导航函数的类别,进一步丰富了窗口的计算能力。这将一次记录几个比较常用的导航函数他们包含,FIRST_VALUELAST_VALUENTH_VALU......
  • Mysql 日期大小比较
    Mysql日期大小比较​​mysql时间参数年月日时分秒比较大小​​​​mysql时间参数年月日比较大小​​mysql时间参数年月日时分秒比较大小<selectid="checkTimeR......
  • Mysql开启ssl加密协议及Java客户端配置操作指南
    Mysql开启ssl加密协议及Java客户端配置操作指南​​Mysql配置​​​​验证Mysql开启SSL​​​​Java客户端操作​​​​生成证书密码​​​​配置数据库连接​​​​工具配......
  • springboot+mybatis+log4j日志sql输出和文件输出
    pom引入依赖:<dependency><!--排除spring-boot-starter-logging--><groupId>org.springframework.boot</groupId><artifactId>sprin......
  • mysql8数据类型汇总
    数据类型之enum在Mysql中的Enum数据类型补充:enum类型NOTNULL的时候,默认值是下标为1的值['男','女']的默认值是'男'......
  • ubuntu20.04下安装mysql5.7后,允许远程登录
    1、在mysql的配置文件中设置bind-address=0.0.0.0 2、在databasemysql中设置root用户的host为% 安装deb后使用apt-cachepolicymysql-server查看......
  • mac Django 连接mysql
    目录macdjango2.2正确连接mysql方式问题描述macdjango2.2正确连接mysql方式macDjango电脑连接mysql时候会出现一些错误,因为版本问题。以下操作Django2.2.22亲测有效......
  • 基于Python+Django+Vue+MYSQL的社团管理系统
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • 一键部署MySQL8+keepalived双主热备高可用
    概述本次的文章会格外的长,网上大多的配置流程已经不可使用,本篇文章可以称为保姆级教程,而且通过shell脚本大大减少了部署mysql主从,双主的工作量。如上图,VIP地址为192.168......