Tutoriel : Connexion à une base de données SQLite depuis une application VCL
Remonter à Tutoriels Bases de données et LiveBindings
Ce tutoriel est une application Fiches VCL simple qui montre comment établir une connexion à une base de données SQLite et exécuter une requête simple.
Dans cet exemple, nous utilisons une base de données fournie par Embarcadero, mais vous pouvez utiliser n'importe quelle base de données SQLite accessible. La base de données utilisée dans cet exemple se trouve à l'emplacement suivant :
- Windows :
C:\Utilisateurs\Public\Documents\Embarcadero\Studio\22.0\Samples\Data\Employees.s3db
.
La base de données comporte une table nommée Employee et plusieurs tuples avec des champs. Nous allons établir la connexion à la base de données et afficher tous les tuples dans la table Employee.
Etapes
- Sélectionnez Fichier > Nouveau > Application Fiches VCL - Delphi, ou Applications Fiches VCL - C++Builder.
- Ajoutez les composants suivants à la fiche :
- Deux contrôles TButton ; depuis l'inspecteur d'objets, définissez les propriétés Name des boutons sur
executeButton
etconnectButton
, et leurs propriétés Caption, respectivement surExecute
etConnect
. - Un contrôle TSQLConnection ; depuis l'inspecteur d'objets, définissez la propriété Driver sur
Sqlite
. - Un contrôle TMemo. Dans l'inspecteur d'objets, définissez la propriété Name sur
outputMemo
. - Un contrôle TSQLQuery ; depuis l'inspecteur d'objets, définissez la propriété SQLConnection sur
SQLConnection1
.
- Deux contrôles TButton ; depuis l'inspecteur d'objets, définissez les propriétés Name des boutons sur
- 4. Ajoutez le code suivant au gestionnaire d'événement OnClick pour le
connectButton
. - Remarque : Remplacez "full_path_to_your_database_file" par le chemin d'accès absolu de votre fichier de base de données.
- Dans Delphi :
procedure TDemonstration.connectButtonClick(Sender: TObject);
begin
SQLConnection1.Params.Add('Database=full_path_to_your_database_file');
try
// Establish the connection.
SQLConnection1.Connected := true;
executeButton.Enabled := true;
outputMemo.Text := 'Connection established!';
except
on E: EDatabaseError do
ShowMessage('Exception raised with message' + E.Message);
end;
end;
- Dans C++ :
void __fastcall TDemonstration::connectButtonClick(TObject *Sender)
{
// Use double backslash in Windows Paths as the backslash character (\) must be escaped with another one to be treated literally.
SQLConnection1->Params->Add("Database=full_path_to_your_database_file");
try
{
// Establish the connection.
SQLConnection1->Connected = true;
executeButton->Enabled = true;
outputMemo->Text = "Connection established!";
}
catch (EDatabaseError& E)
{
ShowMessage("Exception raised with message" + E.Message);
}
}
- 5. Ajoutez le code suivant au gestionnaire d'événement OnClick pour le
executeButton
.- Dans Delphi :
procedure TDemonstration.executeButtonClick(Sender: TObject);
var
query: String;
begin
outputMemo.ClearSelection;
// A random query
query := 'SELECT * FROM Employee;';
try
// Assign the query to the object SQLQuery1.
SQLQuery1.SQL.Text := query;
SQLQuery1.Active := true;
except
on E: Exception do
outputMemo.Text := 'Exception raised with message: ' + E.Message;
end;
// Show the results of the query in a TMemo control.
ShowSelectResults();
end;
- Dans C++ :
void __fastcall TDemonstration::executeButtonClick(TObject *Sender)
{
String query;
outputMemo->ClearSelection();
// A random query
query = "SELECT * FROM Employee;";
try
{
// Assign the query to the object SQLQuery1.
SQLQuery1->SQL->Text = query;
SQLQuery1->Active = true;
}
catch (Exception& E)
{
outputMemo->Text = "Exception raised with message" + E.Message;
}
// Show the results of the query in a TMemo control.
ShowSelectResults();
}
- Voici le code de la procédure
ShowSelectResults
:- Dans Delphi :
procedure TDemonstration.ShowSelectResults();
var
names: TStringList;
i: Integer;
currentField: TField;
currentLine: string;
begin
if not SQLQuery1.IsEmpty then
begin
SQLQuery1.First;
names := TStringList.Create;
try
SQLQuery1.GetFieldNames(names);
while not SQLQuery1.Eof do
begin
currentLine := '';
for i := 0 to names.Count - 1 do
begin
currentField := SQLQuery1.FieldByName(names[i]);
currentLine := currentLine + ' ' + currentField.AsString;
end;
outputMemo.Lines.Add(currentLine);
SQLQuery1.Next;
end;
finally
names.Free;
end;
end;
end;
- Remarque : N'oubliez pas de déclarer
procedure ShowSelectResults();
- Remarque : N'oubliez pas de déclarer
- Dans C++ :
void __fastcall TDemonstration::ShowSelectResults()
{
TStringList* names;
TField* currentField;
String currentLine;
if (!SQLQuery1->IsEmpty()) {
SQLQuery1->First();
names = new TStringList
__try{
SQLQuery1->GetFieldNames(names);
while (!SQLQuery1->Eof) {
currentLine = "";
for (int i = 0; i < names->Count; ++i) {
currentField = SQLQuery1->FieldByName(names->Strings[i]);
currentLine = currentLine + " " + currentField->AsString;
}
outputMemo->Lines->Add(currentLine);
SQLQuery1->Next();
}
}
}
__finally {
names->Free();
}
}
- Remarque : N'oubliez pas de déclarer
void __fastcall TDemonstration::ShowSelectResults();
dans le fichier Unit.h de votre projet.
- Remarque : N'oubliez pas de déclarer
- 6. Après avoir exécuté votre application et cliqué sur le bouton Connect, puis sur le bouton Execute, son apparence doit être la suivante :
Remarque : Sur Windows, pour établir la connexion à une base de données SQLite, placez la bibliothèque sqlite3.dll dans votre chemin système et vérifiez que sqlite3.dll puisse être trouvée par votre application.
- Sur Windows 32 bits : C:\Windows\System32
- Sur Windows 64 bits : C:\Windows\SysWOW64
Usages
- Data.DB.TDataSet
- Data.DB.TField
- System.Classes.TStringList
- Data.SqlExpr.TSQLConnection
- Vcl.StdCtrls.TButton
- Vcl.StdCtrls.TMemo
- Vcl.Controls.TControl.OnClick