| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Статьи:: Delphi :: Delphi и Базы данных :: Секреты Delphi. Мониторинг SQL-запросов при работе с ADO-компонентами
Секреты Delphi. Мониторинг SQL-запросов при работе с ADO-компонентами
Не секрет, что приложения баз данных составляют довольно большую долю всех
вновь разрабатываемых приложений. Ни одна информационная система не может быть
создана без соединения с той или иной СУБД. В первых версиях нам предлагался
давно устаревший, но все еще успешно использующийся Borland Database Engine
(BDE). Одним из альтернативных способов доступа к источникам данных стали
компоненты ADO. fExecuteTime :dword;
...
procedure TDM.dbConnectionWillExecute(Connection: TADOConnection;
var CommandText: WideString; var CursorType: TCursorType;
var LockType: TADOLockType; var CommandType: TCommandType;
var ExecuteOptions: TExecuteOptions; var EventStatus: TEventStatus;
const Command: _Command; const Recordset: _Recordset);
var
i,j:integer;
infoStr:String;
tmpParameters:Parameters;
begin
if gDebugMode then
MonitorEvent('WillExecute.. ',[]);
fExecuteTime:=GetTickCount;
if gSqlMonitor and gDebugMode then
begin
MonitorEvent(CommandText,['']);
if Assigned(Recordset) then
begin
for i := 0 to (dbConnection.DataSetCount-1) do
if Assigned(dbConnection.DataSets[i].Recordset)
and (Recordset = dbConnection.DataSets[i].Recordset) then
if (dbConnection.DataSets[i] is TADODataSet)
and (TADODataSet(dbConnection.DataSets[i]).Parameters.Count > 0) then
for j:=0 to TADODataSet(dbConnection.DataSets[i]).Parameters.Count - 1 do
begin
infoStr:='P['+IntToStr(j)+'] '
+ TADODataSet(dbConnection.DataSets[i]).Parameters.Items[j].Name+' = ';
if Not VarisNull(TADODataSet(dbConnection.DataSets[i]).
Parameters.Items[j].Value) then
infoStr:=infoStr
+ String(TADODataSet(dbConnection.DataSets[i]).Parameters.Items[j].Value)
else
infoStr:=infoStr + 'Null';
MonitorEvent(infoStr,['']);
end;
end;
if Assigned(Command) then
begin
tmpParameters:=Command.Get_Parameters;
if (tmpParameters.Count > 0) then
for j:=0 to tmpParameters.Count - 1 do
begin
infoStr:=tmpParameters.Item[j].Name+' = ';
if Not VarisNull(tmpParameters.Item[j].Value) then
infoStr:=infoStr + String(tmpParameters.Item[j].Value)
else
infoStr:=infoStr + 'Null';
MonitorEvent(infoStr,['']);
end
end;
MonitorEvent('',['']);
end;
end;
procedure TDM.dbConnectionExecuteComplete(Connection: TADOConnection;
RecordsAffected: Integer; const Error: Error;
var EventStatus: TEventStatus; const Command: _Command;
const Recordset: _Recordset);
begin
Self.fExecuteTime:=GetTickCount-Self.fExecuteTime;
if gDebugMode then
MonitorEvent('Execute time: ' + FloatToStr(Self.fExecuteTime / 1000) + ' s.',[]);
end;
Для управления режимом мониторинга и отладки введены глобальные переменные
gSqlMonitor и gDebugMode. Функция вывода окна мониторинга MonitorEvent не
приводится, так как написать ее очень просто. Рубрика: Delphi и Базы данных
Вышел MySQL 5.1.30, первый стабильный рели....
После публикации 29 тестовых версий анонсирован первый стабильный релиз MySQL 5.1, пригодный для промышленной эксплуатации и обеспечивающий увеличение производительности для "тяжелых" SQL запросов, по сравнению с MySQL 5.0, примерно на 15-20%. Главные новшества появившиеся в MySQL 5.1:
Подробнее... |
Рубрика: MySQL
| Добавлено: 28.11.2008
Тестирование параллельных программ.
Тестирование параллельного программного обеспечения представляет собой более сложную задачу по сравнению с тестированием последовательной программы. Программист должен знать о подводных камнях при тестировании параллельного кода, имеющихся методологиях и инструментарии.
Подробнее... |
Рубрика: Тестирование
| Добавлено: 28.11.2008
Архитектура AMD64 (EM64T).
Аннотация. В статье кратко рассматривается архитектура AMD64 компании AMD и ее реализация EM64T компании Intel. Описаны особенности архитектуры, ее возможности, достоинства и недостатки.
Подробнее... |
Рубрика: Архитектура AMD
| Добавлено: 27.11.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|