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

JDBC Java Discussion :

[JDBC] Commande SQL récalcitrante


Sujet :

JDBC Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 37
    Points : 20
    Points
    20
    Par défaut [JDBC] Commande SQL récalcitrante
    Je ne comprend pas pourquoi la requete SQL suivante ne fonctionne pas lorsque je l'envois au travers de JDBC.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    CALL DELTABLE('LZ_ALERTE');
     
    CREATE TABLE LZ_ALERTE
    (
      ID NUMBER (10,0) NOT NULL,
      CODE_ENTITE_ALERTE VARCHAR2(6),
      DATE_TRAITEMENT_ALERTE DATE,
      LIBELLE_ALERTE VARCHAR2(40),
      CODE_METIER_ALERTE CHAR(3)
    );
    Merci de votre aide.

    Dahu

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 37
    Points : 20
    Points
    20
    Par défaut
    J'oubliais, le message d'erreur renvoyé par le serveur ORACLE est :

    ORA-00911: invalid character
    J'ajoute que la même commande lancer avec JFACEDBC (Eclipse) fonctionne très bien !?

    Merci

  3. #3
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 65
    Points : 74
    Points
    74
    Par défaut
    peut etre parce que tu envoies 2 requetes en une seule fois ....

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 37
    Points : 20
    Points
    20
    Par défaut
    Effectivement, si j'envois les deux requêtes l'une après l'autre, cela fonctionne. Mon problème est que mon application gères les commandes SQL à partir d'un fichier (<fichier>.sql). Je ne maitrise pas le nombre de commandes qu'il contient.

    Comment JFACEDBC fait-il pour envoyer plusieurs commandes en même temps ? Moi j'utilise la méthode execute sur un objet de la classe Statement à la quelle je passe en argument une chaine de caractère contenant la liste des commandes (séparée par un point virgule et un retour chariot).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    while ((ligne = fichierEntree.readLineScript()) != null)
    {
    [...]
    	// Ajout de la ligne courante à la requette
    	requeteCourante = requeteCourante + ligne + "\n";
    [...]
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    /* exécution du groupe de requetes courant */
    boolean execute = statement.execute(requeteCourante);
    Merci de votre aide.

    DAhu.

  5. #5
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 65
    Points : 74
    Points
    74
    Par défaut
    la méthode est bonne.
    par contre, moi ce que je ferais, c'est découper la chaine contenant les commandes à chaque fois que l'on trouve un ";".
    comme cela, on isole les requêtes que l'on peut passer une à une.
    pour cela, on peut utiliser la méthode split si jdk > 1.4.2 je crois, sinon du StringTokenizer, ou encore du String.substring avec String.indexOf.
    y a le choix.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 37
    Points : 20
    Points
    20
    Par défaut
    Je te remercie beaucoup pour ton aide.

    Je vais examiner ta solution qui m'a l'air pleine de bon sens.

    Par ailleurs, j'ai trouver une autre méthode qui s'appelle executeBatch sur le même objet.

    J'espère y arriver.

    Merci encore.

    A+

    Dahu.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 30
    Points : 36
    Points
    36
    Par défaut
    tu peux aussi envoyer plusieurs requetes a la fois en utilisant

    statement.addBatch("req 1");
    statement.addBatch("req 2");
    statement.addBatch("req 3");


    statement.executeBatch();

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 37
    Points : 20
    Points
    20
    Par défaut
    Ca marche.

    J'ai utilisé les commandes addBatch et executeBatch sur un objet de la classe Statement.

    Merci beaucoup pour votre aide.

    Dahu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Commande SQL / connaître taille d'1 base
    Par Thomad dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/04/2005, 11h38
  2. Pilote JDBC pour SQL Server
    Par david71 dans le forum JDBC
    Réponses: 6
    Dernier message: 21/01/2005, 14h39
  3. commande SQL truncate table xxx
    Par Yogy dans le forum SQL
    Réponses: 1
    Dernier message: 07/10/2004, 14h57
  4. [JDBC] java.sql.SQLException: Closed Statement
    Par cmoulin dans le forum JDBC
    Réponses: 4
    Dernier message: 03/09/2004, 17h22
  5. [dBase]il y a mieux que la commande sql UPDATE ?
    Par sana72 dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 12/12/2002, 11h59

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