SqlDBHowto/nl

From Lazarus wiki
Revision as of 21:28, 12 September 2008 by Loesje (talk | contribs) (First try to create some SqlDB-howto's)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Introductie

Omdat er heel veel vragen over SqlDb zijn, en zo weinig documentatie beschikbaar is, heb ik besloten toch het een en ander op te gaan schrijven. Ik doe het in het Nederlands, omdat dat me nu eenmaal veel beter afgaat. Later kunnen anderen het altijd nog naar het Engels vertalen. Vooralsnog is het een proef, ik weet niet of ik dit helemaal af ga maken. Misschien niet, en verwijder ik het binnenkort weer. Maar misschien is het wel heel nuttig. De tijd zal het leren.

Ik heb gekozen voor een soort 'howto'-opzet. Ik wil een voor een vragen beantwoorden, uitleggen hoe je iets doet. Al die vragen achter elkaar moeten wel ook een verhaal vormen, die als een soort tutorial doorlopen kan worden.

Ik zal proberen het zo te verwoorden dat het duidelijk is voor zowel Lazarus als Freepascal, maar de voorbeelden zijn voor Freepascal. (daarmee bedoel ik dat het console-applicaties zijn)

Hoe maak ik een verbinding met een database-server?

SqlDB maakt niet direct verbinding met de database server, maar maakt gebruik van de client die bij de besbetreffende database-server hoort. SqlDB stuurt de commando's naar de client-library, die vervolgens de daadwerkelijke verbinding maakt. Dat betekent dus dat deze library altijd op de computer geinstalleerd moet zijn, wil je een verbinding kunnen maken. In Windows is dat meestal een dll, in Linux een .so en voor OS/X een .dylib-bestand.

Als de client-library goed geinstalleerd is, kan je een verbinding maken met een database-server met een TSQLConnection-component. Er zijn verschillende TSQLConnection componenten voor de verschillende database-servers. Voorbeelden zijn TIBConnection om met een Firebird/Interbase client-library te verbinden. TPQConnection voor PostgreSQL en TMySQL40Connection, TMySQL41Connection en TMySQL50connection voor MySQL-clients met versienummer 4.0, 4.1 of 5.0. De verschillen tussen deze MySQL versies zijn zo groot, dat ze niet door elkaar te gebruiken zijn. Als de MySQL-client library versie 4.1 is geinstalleerd, moet een TMySQL41Connection gebruikt worden.

Het kan per database verschillen, maar over het algemeen moeten er vier properties ingesteld worden om met een database-server te kunnen verbinden: de naam van de database, de server-naam of ip-adres, een gebruikersnaam en wachtwoord. Als deze zijn ingesteld kan er een verbinding gemaakt worden met de 'open' methode. Als de verbinding mislukt, komt er een EDatabaseError. Met de property 'connected' kan gekeken worden of er al een verbinding met de database-server is. Met 'close' kan de verbinding weer afgesloten worden.

Program ConnectDB
Procedure CreateConnection : TSQLConnection;
begin
  Result := TIBConnection.Create(nil);
  Result.Hostname := 'localhost';
  Result.DatabaseName := '/opt/firebird/examples/employee.fdb';
  Result.UserName := 'sysdba';
  Result.Password := 'masterkey';
end;
begin
  with CreateConnection do
    begin 
    Open;
    if Connected then
      writeln('Succesful connect!')
    else
      writeln('This is not possible, because if the connection failed, an exception should be raised, so this code would not be executed');
    Close;
    Destroy;
    end;
end.

Als er een exceptie optreed, lees de foutmelding dan zorgvuldig. Het kan zijn dat de gebruikersnaam niet goed is, of bijvoorbeeld het ip-adres. Als in de foutmelding staat dat de client-library niet gevonden kan worden, controleer dan of die client juist geinstalleerd is. Vaak staat in de foutmelding de letterlijke naam van het bestand waarnaar gezocht wordt.

Alle logica die verschillend is per database-client, zit verwerkt in de TSQLConnection.