Tutoriel : Connexion à une base de données SQLite depuis une application VCL

De RAD Studio
Aller à : navigation, rechercher

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\20.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

  1. Sélectionnez Fichier > Nouveau > Application Fiches VCL - Delphi, ou Applications Fiches VCL - C++Builder.
  2. Ajoutez les composants suivants à la fiche :
3. A ce stade, la fiche devrait ressembler à ceci :
VLCSQLiteTutorialForm.png
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();
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.
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 :
VLCSQLiteTutorialApp.png

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

Voir aussi