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 :

PreparedStatement et executeBatch : SQLWarning ?


Sujet :

JDBC Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Points : 5
    Points
    5
    Par défaut PreparedStatement et executeBatch : SQLWarning ?
    Lors de l'exécution de ce code :
    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
    25
    26
    27
    28
     
    public void ajouterEmployes( List<Employe> l ) throws SQLException {
     
        ouvrirConnexion();
        try {
     
            connexion.setAutoCommit( false );
            PreparedStatement st = connexion.prepareStatement("insert into EMPLOYE values(?, ?, ?, ?)" );
            for ( Employe e:l ) {
     
                st.clearParameters();
                st.setString( 1, e.getNom() );
                st.setString( 2, e.getPrenom() );
                st.setDate( 3, e.getDateNaissance() );
                st.setString( 4, nomE );
                st.addBatch();
     
            }
            st.executeBatch();
            connexion.commit();
     
        } finally {
     
            connexion.setAutoCommit( true );
            fermerConnexion();
     
        }
    }
    J'ai le message suivant (les données sont malgré tout insérées dans la base) :
    sun.jdbc.odbc.JdbcOdbcSQLWarning: [MySQL][ODBC 5.1 Driver][mysqld-5.1.30-community]Param arrays not supported
    at sun.jdbc.odbc.JdbcOdbc.createSQLWarning(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbc.SQLSetStmtAttr(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setStmtParameterSize(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeBatchUpdate(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbcStatement.executeBatch(Unknown Source)
    Comment supprimer ce message ?

    D'avance merci.

  2. #2
    Membre actif
    Homme Profil pro
    Analyst
    Inscrit en
    Juillet 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 150
    Points : 217
    Points
    217
    Par défaut
    Tu aurais du completer cette discution au lieu d'en ouvrir une autre.(réponse que je viens de faire sur ton autre est inutile)

    Ceci étant, si tu fait sans " st.setString( 4, nomE );"(en ayant eu soin de lister la liste des champs renseignés) est-ce que ça passe ?

    Si oui, quelle est la déclaration/alimentation de nomE ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par ElbeDD Voir le message
    Tu aurais du completer cette discution au lieu d'en ouvrir une autre.(réponse que je viens de faire sur ton autre est inutile)

    Ceci étant, si tu fait sans " st.setString( 4, nomE );"(en ayant eu soin de lister la liste des champs renseignés) est-ce que ça passe ?

    Si oui, quelle est la déclaration/alimentation de nomE ?

    Merci de ton aide!
    Désolé pour l'ouverture de deux discussions...

    Même en supprimant "st.setString( 4, nomE);", le message reste identique.

    J'ai également essayé :
    st.setString(1,"Martin");
    st.setString(2,"Henri");
    st.setDate(3,Date.valueOf("1975-12-05");
    st.setString(4,"ABCD");

    Le résultat est le même!

    Par contre, si je fais un "st.execute();" en supprimant le 'batch' pas de problème.

    NomE est déclaré : "private String NomE;"

    et alimenté par le constructeur :
    public Entreprise(String nomE) {
    this.nomE = nomE;
    }


    L'utilisation de "st.setString( 4, getNomE);" ne résoud pas le problème.

  4. #4
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Problème résolu!

    En fait, le problème vient de l'utilisation du connecteur ODBC que j'ai remplacé par le connecteur JDBC. La connection devient :

    //Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
    Class.forName( "com.mysql.jdbc.Driver" );


    et

    //connexion = DriverManager.getConnection( "jdbc:odbc:entreprise" );
    connexion = DriverManager.getConnection( "jdbc:mysql://localhost:3306/entreprise","root","" );



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

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/10/2006, 15h36
  2. Réponses: 2
    Dernier message: 06/10/2004, 18h09
  3. [WSAD] IndexOutOfBounds et PreparedStatement : Pourquoi ?
    Par -Link01- dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 31/08/2004, 10h59
  4. Réponses: 5
    Dernier message: 19/08/2004, 11h11
  5. Réponses: 13
    Dernier message: 10/05/2004, 16h49

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