IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

executer script SQL par delphi


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 30
    Points : 12
    Points
    12
    Par défaut executer script SQL par delphi
    SVP,SVP
    comment executer les scripte sql server par programmation sans utilise les fichier bat
    merci a l'avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Points : 1 414
    Points
    1 414
    Par défaut
    Il me semble que les composants ZEOS doivent en contenir un qui gère les scripts

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 30
    Points : 12
    Points
    12
    Par défaut
    BONSOIR,
    merci pour la réponce,
    voila ce que j'ai fait avec delphi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ZSQLProcessor1.Clear;
    ZSQLProcessor1.LoadFromFile(ExtractFilePath(ParamStr(0) )+ 'SCRIPTE.sql');
    ZSQLProcessor1.Execute;
    end;
    le fichier 'SCRIPTE.sql' s’exécute normal avec SQL serveur mais quand j’exécute avec Delphi il affiche pas mal d’erreur
    remarque scripte.SQL création de base de donne

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 710
    Points : 25 596
    Points
    25 596
    Par défaut


    Je ne connais pas Zeos, en général se connecter sur un serveur de DB sans indiquer le nom de la base de données n'est pas apprécié ou n'est pas le plus facile à configurer !

    ZSQLProcessor utilise un objet Connection, comment l'as-tu configuré ?

    Certains utilisent l'OLE 'ADOX.Catalog'
    Avec UniDac, le TUniScript permet de faire le CREATE DATABASE très simplement

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Points : 1 414
    Points
    1 414
    Par défaut
    j'utilise aussi les composants de DEVART, et avec le composant pour les SCRIPTS, la connexion à la base (ou une création) se réalise à partir du script lui-même comme l'indique ShaiLeTroll.


    Pourquoi cela ne serait-il pas pareil avec ZEOS ?
    pourquoi ne pas allez voir le forum et les FAQ du site de ZEOS?

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 30
    Points : 12
    Points
    12
    Par défaut
    Bonjour
    Merci a touts pour les réponses
    Les composants de devart (ctad, UniDac ….) ces des composant payable, je veux un composant Delphi gratuit, et qui exécute un scripte SQL sans connecté a une base de donnée
    Merci a la avance

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 30
    Points : 12
    Points
    12
    Par défaut
    SVP

    Il me manque que cette tache (composant qui exécute les SQL scripte indépendant des bases) pour terminer mon logiciel, j’ai utilisé les fichiers bat mais ces moches comme méthode, et sa fait longtemps que je cherche sur le net, sa me rend malade

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Points : 1 414
    Points
    1 414
    Par défaut
    Je ne connais que ZEOS qui soit gratuit.

    mais avez-vous vérifier l'aide de zeos, les exemples (s'il y en a)?

    et pourquoi ne pas demander de l'aide au forum ZEOS ?

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 277
    Points : 41 688
    Points
    41 688
    Billets dans le blog
    64
    Par défaut
    Pour créer une database on ne peux pas utiliser un script . Ce qui en soit est tout a fait logique , comment executer un sql sur une BDD inexistante ?
    Le script pourra être utiliser pour créer les tables , insérer les données etc ..

    avec ZEOS il faut utiliser le TZConnexion pour créer la Database

    Citation Envoyé par ZEOS Forum

    Useful TZConnection parameters

    Additional parameters for establishing connections to Firebird databases are::

    CreateNewDataBase:
    A new database will be created based on the specified CREATE DATABASE statements. When the database is created the connection will be established immediately. All this happens by calling the Connect method of TZConnection.

    :
    ZConnection1.Database := 'd:\db1.fdb';
    ZConnection1.Protocol := 'firebird-1.5';
    ZConnection1.Properties.Add ('CreateNewDatabase=CREATE DATABASE ' +
    QuotedStr ('d:\db1.fdb') + ' USER ' +
    QuotedStr ('sysdba') + ' PASSWORD ' + QuotedStr ('masterkey') +
    ' PAGE_SIZE 4096 DEFAULT CHARACTER SET ISO8859_1');
    ZConnection1.Connect;
    :

    To execute this correctly you have to set the Database and Protocol properties at minimum (also possible in objectinspector).

    Dialect:
    This parameter sets Firebird's SQL dialiect. To set dialect "1" you have to use the following code:

    ZConnection.Properties.Add ('Dialect=1');



    The dialect of Firebird 1.5.x is set to "3" by default.
    PS . Ne pas utiliser le CharSet UTF8 avec les composants ZEOS et Firebird , les bugs ne sont toujours pas résolu .

  10. #10
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 30
    Points : 12
    Points
    12
    Par défaut la création d'une base sql server 2005 avec ZConnection
    bonjour
    j'ai executer votre code et voila ce qui me donne comme erreur
    none of the dynamic libraries can be found ;fbclient15.dll,fbclient.DLL

    MERCI

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 277
    Points : 41 688
    Points
    41 688
    Billets dans le blog
    64
    Par défaut
    Parce qu'il aurait peut être fallu indiquer de quel type de SGBD il s'agissait .
    L'exemple indiqué était pour Firebird comme indiqué dans le texte .

    Un peu d'effort de conversion !! ou de recherche internet sur le ZEOS Forum
    Citation Envoyé par Romila
    et ça fait longtemps que je cherche sur le net,
    pas aux bons endroits je pense !

    il est évident qu'il faut changer le protocole , je ne connais pas le nom pour celui recherché , mais si un TZConnexion fonctionne il est pas difficile de savoir le nom exact non ?

  12. #12
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 30
    Points : 12
    Points
    12
    Par défaut
    OK merci

  13. #13
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 710
    Points : 25 596
    Points
    25 596
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Parce qu'il aurait peut être fallu indiquer de quel type de SGBD il s'agissait .
    Euh, dans le 1er sujet, c'est écrit :
    Citation Envoyé par ROMILA Voir le message
    comment executer les scripte sql server par programmation sans utilise les fichier bat

  14. #14
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 277
    Points : 41 688
    Points
    41 688
    Billets dans le blog
    64
    Par défaut
    Euh, dans le 1er sujet, c'est écrit
    D'accord , méa culpa , a ma décharge , j'étais de mauvais poil et surtout je n'avais lu que la 'partie ZEOS' .

  15. #15
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 173
    Points
    4 173
    Par défaut
    Citation Envoyé par ROMILA Voir le message
    le fichier 'SCRIPTE.sql' s’exécute normal avec SQL serveur mais quand j’exécute avec Delphi il affiche pas mal d’erreur
    remarque scripte.SQL création de base de donne
    Et si tu nus disais de quelles erreur il s'agit...

    Pour exécuter un script SQL sur SQL Serveur, tu n'as pas besoin de composant particulier. Tu ouvres une connexion sur le serveur (je le fait en OLEDB, mais ADO va très bien pour ça).
    Si tu veux créer une nouvelle base de données, il te suffit d'ouvrir la connexion sur la base master. (et fait attention à ce que le script contienne bien une instruction , après le sinon tu vas créer les objets de ta base dans master...)

    Ensuite tu exécutes ton script comme une commande SQL ordinaire...
    La seule chose qui va te préoccuper, c'est si ton script SQL contient des GO. Pour une création de base de données, tu dois sans doute en avoir un certain nombre...

    Les GO sont des marqueurs à l'intérieur du script pour séparer les batch à exécuter. Il ne s'agit pas d'instruction SQL, donc tu ne peux pas demander à SQL Server de les exécuter.
    Il faut obligatoirement éclater ton script sur chaque GO et l'exécuter petit bout par petit bout en séquence.

    Autrement dit, tu charges le script dans une StringList (appelons la Script). Puis tu prépares une deuxième liste destinée à recevoir les commandes à exécuter (appelons la SQL).

    Pour chaque ligne de Script, tu testes s'il s'agit d'un GO.
    Si la ligne n'est pas un GO, tu l'ajoutes à la fin de SQL.
    Si la ligne est un GO, tu exécutes SQL comme une commande SQL ordinaire, puis tu vides SQL.

    A la fin de la boucle sur Script, il ne faut pas oublier d'exécuter les dernières lignes contenues dans SQL qui n'ont pas encore été exécutées.

    Fait attention également, si tu as deux GO consécutifs, tu peux te retrouver à essayer d'exécuter SQL alors que la liste est vide... SQL Server n'aime pas les batchs vides, il va faire une erreur. Dans ce cas, il faut faire le test avant et ne pas exécuter le batch s'il est vide.

    Sur la connexion ADO, tu as un événement OnInfoMessage. Si tu gères l'événement, tu pourras récupérer les messages d'informations tel que les PRINT qui remontent pendant l'exécution du script.

    Maintenant si tu veux vraiment utiliser un composant pour exécuter le script, SQL Server fournit deux API : SQLDMO et SMO.
    SQLDMO est une librairie d'objets COM. Il te suffira d'instancier un objet SQLServer, puis tu as une méthode ExecuteWithResultsAndMessages2 pour exécuter un script SQL en récupérant les messages d'information.
    Le problème c'est que SQLDMO est une API obsolète. Elle n'est plus installée à partir de SQL Server 2005 et est remplacée par SMO.
    Et SMO de son côté est une API .NET, donc plus difficilement utilisable en Win32...

    Moi, j'exécute mes scripts SQL avec la première méthode que j'ai donnée. Je crée les nouvelles bases de données, j'installe également les mises à jour de structure à chaque nouvelle version de l'appli.

Discussions similaires

  1. Execution script SQL avec paramètres
    Par cell dans le forum kettle/PDI
    Réponses: 2
    Dernier message: 06/09/2011, 18h50
  2. Authentification web sur script perl par Delphi
    Par heatcraft dans le forum Web & réseau
    Réponses: 0
    Dernier message: 13/07/2009, 10h30
  3. Executer script sql
    Par Shadow aok dans le forum VBScript
    Réponses: 6
    Dernier message: 06/07/2008, 20h24
  4. [shell] Execution script sql et JAVA
    Par RR instinct dans le forum Langage
    Réponses: 7
    Dernier message: 26/09/2006, 12h08
  5. [VB6]Executer script sql
    Par issaines dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 24/04/2006, 18h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo