Подключение через TMySQLClien & TMySQLResult
Материал из DRKB
Подключение через TMySQLClien & TMySQLResult[править | править код]
Решение нашел...
- Без использования dbExpress, а с использованием специальных классов TMySQLClien & TMySQLResult.
- Все эти файлы ( файл приаттачит Secandr (90 кил)) надо положить либо в папку с проектом, либо в <Delphi_dir>/lib.
- Код:
Сразу говорю, показал только основные моменты. Код, для определения ошибок и т.п. писать не стал.
uses
uMysqlClient, uMysqlCT, uMysqlErrors, uMysqlHelpers, uMysqlNet, uMysqlNewPassword, uMysqlSSL, uMysqlVio;
type
TMainForm = class(TForm)
public
procedure Connect();
procedure QueryData(Query: string); // Результирующий запрос (заносим данные в таблицу)
procedure QueryNoData(Query: string); // insetrt, delete - нет полученных данных
end;
var
SQLConnection: TMysqlClient; // Объявляем переменную для соединения.
Grid: TStringGrid;
implementation
// Установка соединения
procedure TMainForm.Connect();
begin
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;
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;
Author: Mal Hack
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 02938