1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| // -----------------------------------------------------------------------------
class function TepcConfigController.CheckMySQL(const Host, User, PassWord: string; DoClearReport: Boolean = True): Integer;
const
MY_SQL_LIB = 'libmySQL.UNLOAD.dll';
var
MySQLLibHandle: THandle;
_mysql_init: function(Connexion: Pointer): Pointer; stdcall;
_mysql_close: procedure(Connexion: Pointer); stdcall;
_mysql_ping: function(Connexion: Pointer): longint; stdcall;
_mysql_errno: function(Connexion: Pointer): longword; stdcall;
_mysql_error: function(Connexion: Pointer): pChar; stdcall;
_mysql_real_connect: function(Connexion: Pointer; const host, user, passwd, db: pChar; port: longword; const unix_socket: pChar; clientflag: longword): Pointer; stdcall;
var
Connexion: Pointer;
begin
Result := 0;
if DoClearReport then
_CCReport.Clear();
MySQLLibHandle := LoadLibrary(MY_SQL_LIB);
if MySQLLibHandle > 0 then
begin
try
@_mysql_init := GetProcAddress(MySQLLibHandle, 'mysql_init');
@_mysql_close := GetProcAddress(MySQLLibHandle, 'mysql_close');
@_mysql_ping := GetProcAddress(MySQLLibHandle, 'mysql_ping');
@_mysql_errno := GetProcAddress(MySQLLibHandle, 'mysql_errno');
@_mysql_error := GetProcAddress(MySQLLibHandle, 'mysql_error');
@_mysql_real_connect := GetProcAddress(MySQLLibHandle, 'mysql_real_connect');
if Assigned(@_mysql_init) and Assigned(@_mysql_close) and Assigned(@_mysql_ping) and Assigned(@_mysql_errno) and Assigned(@_mysql_error) and Assigned(@_mysql_real_connect) then
begin
try
Connexion := _mysql_init(nil);
except
Inc(Result);
_CCReport.AddError('MySQL', 'Librarie MySQL non Initialisée !');
Exit;
end;
if not Assigned(Connexion) then
begin
Inc(Result);
_CCReport.AddError('MySQL', 'Connexion non Initialisée');
Exit;
end;
try
if not Assigned(_mysql_real_connect(Connexion, PChar(Host), PChar(User), PChar(PassWord), nil, 0, nil, 0)) then
begin
Inc(Result);
_CCReport.AddError('MySQL', Format('Echec de la Connexion sur %s : %d - %s ', [Host, _mysql_errno(Connexion), _mysql_error(Connexion)]));
Exit;
end;
if _mysql_ping(Connexion) = 0 then
_CCReport.AddInfo('MySQL', Format('Serveur MySQL [%s] : Succès du Ping !', [Host]))
else begin
Inc(Result);
_CCReport.AddError('MySQL', Format('Le Ping sur le Serveur MySQL [%s] a échoué !', [Host]));
end;
finally
_mysql_close(Connexion);
end;
end;
finally
FreeLibrary(MySQLLibHandle)
end;
end else
begin
Inc(Result);
_CCReport.AddInfo('MySQL', Format('Impossible de Charger "%s"', [MY_SQL_LIB]));
end;
end; |
Partager