السلام عليكم
الربط ب access
Unit : permettant d'interagir avec une base de données MS Access.
<!-- Auteur : Zekiri abdelali -->
<!-- Version : 1.0 -->
<!-- Date : 13/08/2007 -->
<!-- Group : IACP INFORMATIQUE -->
}
unit AccessBDManager;
interface
uses System.Data.OleDb,System.Data;
function Get_ConnectionString : string;
function Get_Provider : string;
function State : System.Data.ConnectionState;
procedure AccessBDOpen(BDPath : string );
function ExecuteRequest(SQLRequest : string) : Integer;
function ExecuteSelectRequest(SQLRequest : string) :OleDbDataReader ;
procedure CloseReader();
procedure Free();
var
/// Connexion à la base de données.
connection : OleDbConnection;
/// DataReader interne.
reader : OleDbDataReader;
/// requête OLE
command : OleDbCommand;
implementation
//________________Obtient la chaîne de connexion à la base de données. _________
function Get_ConnectionString : string;
begin
if connection <> nil then
Result := connection.ConnectionString
else
Result := '';
end;
//______________/// Obtient le fournisseur d'accès à la base de données. _______
/// <example>Microsoft Jet OLEDB</example>
function Get_Provider : string;
begin
if connection <> nil then
Result := connection.Provider
else
Result := '';
end;
//_____________________ Obtient le statut de la connexion. _____________________
function State : System.Data.ConnectionState;
begin
if connection <> nil then
Result := connection.State
else
Result := System.Data.ConnectionState.Closed;
end;
//_______ Ouvre une connexion sans mot de passe à une base de données. _________
procedure AccessBDOpen(BDPath : string );
begin
connection := OleDbConnection.Create('PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source=' + BDPath);
// Ouvre la connexion.
try
connection.Open();
Except on E: Exception do
Console.WriteLine(E.Message)
end;
end;
{___________Exécute une requête de type "non-query" sur la base de donnée
<param name="SQLRequest">La requête SQL.</param>
<returns>Le nombre de lignes affectées par la requête.</returns>
<exception cref="BDManager.BDManagerException"></exception>_______________}
function ExecuteRequest(SQLRequest : string) : Integer;
begin
if (connection <> nil) and (connection.State = System.Data.ConnectionState.Open) then
begin
if (reader = nil)then
begin
command := OleDbCommand.Create(SQLRequest, connection);
try
Result:= command.ExecuteNonQuery();
Except on E: Exception do
Console.WriteLine(E.Message)
end;
end
else
Console.WriteLine('Impossible d''exécuter la requête car le DataReader de la requête précédente est demeuré ouvert.');
end
else
Console.WriteLine('Impossible d''exécuter la requête car la connexion est fermée.');
end;
{___________Eécute une requête de type "SELECT" sur la base de données.
<param name="SQLRequest">La requête SQL</param>
<returns>Un DataReader pointant sur le jeu de résultats de la requête.</returns>
<exception cref="BDManager.BDManagerException"></exception>_________________}
function ExecuteSelectRequest(SQLRequest : string) :OleDbDataReader ;
begin
if (connection <> nil) and (connection.State = System.Data.ConnectionState.Open) then
begin
if (reader = nil) then
begin
command := OleDbCommand.create(SQLRequest, connection);
try
reader := command.ExecuteReader();
Except on E: Exception do
Console.WriteLine(E.Message)
end;
Result:= reader;
end
else
Console.WriteLine('Impossible d''exécuter la requête car le DataReader de la requête précédente est demeuré ouvert.');
end
else
Console.WriteLine('Impossible d''exécuter la requête car la connexion est fermée.');
end;
{_____Ferme le DataReader interne afin de pouvoir exécuter une nouvelle
requête sur la même connexion.___________________}
procedure CloseReader();
begin
if (connection <> nil) and (connection.State = System.Data.ConnectionState.Open) then
begin
if (reader <> nil) then
begin // Ferme le DataReader.
try
reader.Close();
Except on E: Exception do
Console.WriteLine(E.Message)
end;
end
else
Console.WriteLine('Impossible de fermer le DataReader car celui-ci l''est déjà.');
end
else
Console.WriteLine('Impossible de fermer le DataReader car la connexion est fermée.');
end;
//________________ Ferme la connexion à la base de données._____________________
procedure Free();
begin
if (connection <> nil) and (connection.State = System.Data.ConnectionState.Open) then
begin // Ferme la connexion.
try
if (reader <> nil) and (reader.IsClosed) then
CloseReader();
connection.Close();
connection := nil;
Except on E: Exception do
Console.WriteLine(E.Message)
end;
end
else
Console.WriteLine('Impossible de fermer la connexion car celle-ci l''est déjà.');
end;
end.