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 :

nombre max de '?' dans preparedStatement


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de touftouf57
    Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Par défaut nombre max de '?' dans preparedStatement
    Salut tout le monde!

    Quelqu'un saurait-il me dire s'il y a un maximum autorisé de '?' dans un preparedStatement?
    Car actuellement je suis limité à 7, ce qui fait que lors d'un INSERT avec 11 '?' je dois découper mon preparedStatement en 2: (le premier en INSERT et le second en UPDATE).
    Ce maximum serait-il paramétrable? selon quelle méthode?

    J'ai fouillé sur le forum et je n'ai rien trouvé à ce sujet, à moins que je ne fasse pas la bonne recherche.

    Merci pour l'info.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    que je sache, jdbc n'a pas de limitation. C'est probablement ton driver qui limite le nombre de paramètre. Quelle erreur as-tu?

  3. #3
    Membre éclairé Avatar de touftouf57
    Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Par défaut
    Bonsoir, désolé de répondre si tard, mais on m'avait mis la pression sur d'autres choses.

    Voici l'erreur obtenue:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    java.lang.ArrayIndexOutOfBoundsException: 10
    	at oracle.jdbc.driver.OracleSql.computeBasicInfo(OracleSql.java:950)
    	at oracle.jdbc.driver.OracleSql.getSqlKind(OracleSql.java:623)
    	at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:1212)
    	at oracle.jdbc.driver.T4CPreparedStatement.<init>(T4CPreparedStatement.java:28)
    	at oracle.jdbc.driver.T4CDriverExtension.allocatePreparedStatement(T4CDriverExtension.java:68)
    	at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:3140)
    	at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:3042)
    	at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:6022)
    	at baseDeDonnees.BaseDeDonneesImpl.ajoute(BaseDeDonneesImpl.java:560)
    	at baseDeDonnees.test.testInsertion(test.java:197)
    	at baseDeDonnees.test.main(test.java:59)
    et voici le code qui l'a généré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    public void ajoute(Machine machine) throws LectureBDDException {
    		DateFormat format = new SimpleDateFormat("dd-MM-yyyy");
    		PreparedStatement pst=null;
    		try {
    			pst = this
    				.getConnection()
    					.prepareStatement(
    							"Insert Into MACHINE (idMarque,modele,numSerie,numAfpa,nomMachine,adresseIP,dateAchat,finGarantie,idSalle,idParc) Values(?,?,?,?,?,?,?,?,?,?)",
    							new String[] { "idMachine" });
     
    			pst.setInt(1, machine.getMarque().getIdMarque());
    			pst.setString(2, machine.getModele());
    			pst.setString(3, machine.getNumSerie());
    			pst.setString(4, machine.getNumAfpa());
    			pst.setString(5, machine.getNomMachine());
    			pst.setString(6, machine.getAdresseIp());
    			pst.setNString(7, format.format(machine.getDateAchat().getTime()));
    			pst.setNString(8, format.format(machine.getDateFinGarantie().getTime()));
    			pst.setInt(9, machine.getSalle().getIdSalle());
    			pst.setInt(10, machine.getIdParc());
    			pst.executeUpdate();
    			machine.setIdMachine(getAutoIncrementId(pst));
    			log.log(Level.INFO, "machine ajoutée:" + machine.toString());
    			pst.close();
    Y verrais-tu une erreur potentielle?? je viens de parcourir le code pendant une heure et je ne vois pas ce qui cloche! Je me suis renseigné auprès d'autres stagiaires et aucun n'a eut cette erreur.

    Merci d'avance

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    d'après certains sites, ce serait un bug dans le driver oracle. Les solutions sont soit passer à une autre version du driver (plus récente ou plus ancienne), soit utiliser des paramètre nommés plutot que positionnel (mais ça veux dire changer le code). Si ca marche chez d'autres personnes, essaie de récupérer leur version du driver.

  5. #5
    Membre éclairé Avatar de touftouf57
    Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Par défaut
    Merci, de l'info
    mais tous les stagiaires utilisent les mêmes drivers (odbc6). Ce n'est donc pas de ce coté que vient le problème.
    Je verrais cela avec d'autres demain matin. Merci de ces conseils "nocturne"
    bonne nuit

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ojdbc6, ca dit juste "driver oracle pour la spécification java 6", le 6 n'a rien à voir avec la version du driver. As-tu récupéré ce jar depuis le même pc que tes collègues ou as-tu récupéré le jar sur le site de oracle? Dans le second cas, rien ne garanti que le driver est à la même version. Ton code me semble correct, par contre, je confirme, il y a une issue ouverte chez oracle intitulée "PREPARESTATEMENT GET ARRAYINDEXOUTOFBOUNDSEXCEPTION WHEN IN PARAM. AMOUNT IS > 7", malheureusement, cette issue n'est lisible que si on est utilisateur enregistré sur le metalink oracle, pour lequel il faut un numéro de support Je ne peux donc pas te dire si elle est résolue.

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

Discussions similaires

  1. Nombre max de formules dans une feuille
    Par BenjGe dans le forum Excel
    Réponses: 11
    Dernier message: 24/05/2010, 00h08
  2. Nombre max de lignes dans un fichier
    Par quentennis dans le forum C
    Réponses: 3
    Dernier message: 13/05/2008, 15h00
  3. Réponses: 7
    Dernier message: 20/07/2006, 10h29
  4. Réponses: 3
    Dernier message: 24/10/2005, 16h59

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