TSQLScript/fr
│
English (en) │
français (fr) │
日本語 (ja) │
TSQLScript vous laisse passer un ensemble de commandes SQL en une seule exécution. C'est utile si vous voulez mettre en place une nouvelle base de données ou mettre à jour une base existante.
TSQLScript est disponible pour FPC et Lazarus et marche pour toute base de données que SQLdb prend en charge. Il peut être trouvé dans l'onglet SQLdb de la palette de composants.
Exemple
Supposez que vous avez un ensemble de commandes SQL telles que la sortie SQL suivante d'un script pour Firebird dans l'outil FlameRobin (dans Properties/DDL) :
Remarquez qu'au contraire de TSQLQuery, TSQLScript nécessite un point-virgule après chaque ordre SQL.
Cet exemple suppose que vous avez des objets connexion SQL et transaction définis.
uses
...sqldb, TIBConnection,...
const
DBSchemaFile='dbreporter.sql';
var
FBScript:TSQLScript;
ScriptText:TStringList;
TranWasStarted: boolean;
begin
TranWasStarted:=FTran.Active; //Ftran is the transaction, defined somewhere in our class
if not TranWasStarted then FTran.StartTransaction;
FBScript:=TSQLScript.Create(nil);
ScriptText:=TStringList.Create;
try
if not fileexists(DBSchemaFile) then
raise Exception.CreateFmt('dbreporter: could not load database schema file %s',[DBSchemaFile]);
ScriptText.LoadFromFile(DBSchemaFile);
FBScript.DataBase:=(FConn as TIBConnection);
FBScript.Transaction:=FTran;
FBScript.Script:=ScriptText;
// Now everything is loaded in, run all commands at once:
FBScript.Execute;
//... and then commit to make them stick and show them to the SQL that comes
// after the commit
FTran.Commit;
finally
FBScript.Free;
ScriptText.Free;
end;
// Make sure we leave the transaction state as we found it, handy for switchnig
// between explicit start/commit transaction and commitretaining:
if TranWasStarted then FTran.StartTransaction;
Voir aussi \examples\database\tsqlscript dans votre dossier Lazarus pour un exemple de programme faisant la démonstration de TSQLScript.
Avertissement: (au moins) FPC 2.6.4 et antérieur : TSQLScript n'analysera pas tous les ordres DDL de Firebird, vous aurez donc besoin de tester votre script en avance. TSQLScript a été amélioré dans le tronc FPC (2.7.1). Une alternative serait d'appeler l'exécutable ISQL de Firebird en utilisant par exemple TProcess.