Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Подключение через TMySQLClient & TMySQLResult

01.01.2007

Решение нашел...

1. Без использования dbExpress, а с использованием специальных классов TMySQLClien & TMySQLResult.

2. Все эти файлы ( файл приаттачит Secandr (90 кил)) надо положить либо в папку с проектом, либо в <Delphi_dir>/lib.

3. Код:

Сразу говорю, показал только основные моменты. Код, для определения ошибок и т.п. писать не стал.

uses
  .....
 uMysqlClient, uMysqlCT, uMysqlErrors, uMysqlHelpers, uMysqlNet, uMysqlNewPassword, uMysqlSSL, uMysqlVio;
 
type
 ...
   procedure QueryData( Query : string); // Результирующий запрос (заносим данные в таблицу)
   procedure QueryNoData( Query : string ); // insetrt, delete - нет полученны данных 
 ...
 
var
  ...
 SQLConnection     : TMysqlClient; // Объявляем переменную для соединения.
 Grid              : TStringGrid;
  ...
 
implementation
....
 
// Установка соединения
SQLConnection := TMysqlClient.Create;
 with SQLConnection do
  begin
   Host      := 'localhost';
   User      := 'root';
   Password  := '';
   Db        := 'mysql';
 
  try
   connect;
  Except On Exception Do
   begin
     Application.MessageBox( 'К сожалению, соединиться с MySQL-сервером не удалось. Проверьте правильность ввода всех параметров.' , 'Ошибка соединения' , 0 );
    exit;
   end;
  end;
 end;
 
// Выполнение запроса:
 
procedure TMainForm.QueryData( Query : string );
var
mysql_result : TMySQLResult;
i , j : integer;
OK : boolean;
begin
OK := true;
 
try
 mysql_result := SQLConnection.query( Query , true , OK );
Except On Exception Do
 begin
  Application.MessageBox( 'Запрос не выполнилс.' , 'Ошибка соединения' , 0 );
  exit;
 end;
end;
 
with Grid do 
 begin
  ColCount := mysql_result.FieldsCount;
  RowCount := mysql_result.RowsCount+1;
 
  if RowCount = 1 then
   FixedRows := 0
  else
   FixedRows := 1;
 
  for i := 0 to mysql_result.RowsCount - 1 do
    begin
      for j := 0 to mysql_result.FieldsCount do
        Cells[ j , i + 1 ] := mysql_result.FieldValue( j );
      mysql_result.Next;
    end;
 end;
 
mysql_result.free;
end;
 
procedure TMainForm.QueryNoData( Query : string );
begin
// Аналогично предыдущей процедуре, без внесения данных в таблицу. для запросов Insert, Update .....
end;

Автор: Mal Hack

Взято с Vingrad.ru https://forum.vingrad.ru