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 indiqué dans FAQ ne fonctionne pas


Sujet :

JDBC Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 759
    Points : 574
    Points
    574
    Par défaut preparedStatement indiqué dans FAQ ne fonctionne pas
    Bonjour,

    Comme il m'a été conseillé dans un sujet précédent d'utiliser des "PreparedStatement" à la place de simples "Statement", je suis donc en train de faire des essais en fonction du FAQ.

    J'ai un problème car NetBeans ne m'accepte pas le code qui est inscrit dans le FAQ.

    Donc le FAQ dit ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String sql = "UPDATE Stocks SET prix = ?, quantite = ? WHERE nom = ?";
    //préparation de la requête
    PreparedStatement preparedStatement = connection.prepareStatement(sql);
    Moi j'ai écris cela (les variables url, utilisateur, motDePasse ont été définies juste avant le try) :
    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
    29
    30
    31
    32
             //chargement du pilote
            try
            {
                Class.forName("com.mysql.jdbc.Driver");
                //Class.forName("mysql-connector-java-5.1.29-bin.jar");
                System.out.println("chargement pilote");
            }
            catch (ClassNotFoundException e)
            {
                System.out.println("erreur ClassNotFoundException e dans Fen1");
            }
     
            //Connection à la base de données
            try
            {
                System.out.println("connexion BDD");
                Connection connexion = DriverManager.getConnection( url, utilisateur, motDePasse );
            }
            catch (SQLException e)
            {
                System.out.println("SQLException erreur");
            }
           try
            {
                Connection connexion = DriverManager.getConnection( url, utilisateur, motDePasse );
                String sql = "SELECT * FROM client WHERE ville = ?";
                PreparedStatement prep1 = connexion.prepareStatement(sql);
            }
            catch (SQLException e)
            {
                e.printStackTrace();
            }
    Mais NetBeans s'oppose à mon code de la ligne 27 et me propose ceci :
    Cast ... preparedStatement(...) to PreparedStatement
    Change type of prep1 to PreparedStatement
    Si je clique sur la première ligne (Cast ... preparedStatement(...) to PreparedStatement), NetBeans me rajoute "(PreparedStament)" comme suit et retire l'avertissement d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PreparedStatement prep1 = (PreparedStatement) connexion.prepareStatement(sql);
    Si je clique sur 'Change type of prep1 to PreparedStatement), NETBeans change mon code comme suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.PreparedStatement prep1 = connexion.prepareStatement(sql);
    Je ne comprends pas pourquoi le code proposé par le FAQ ne convient pas à NetBeans !?!


  2. #2
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    salut
    quelle est la librairie importée
    peux-tu nous donner tes imports?
    ou bien effaces cela et sauvegardes de nouveau.

    Eric

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Je suppose que tu as une directive import qui fait référence à autre chose qu'à l'interface java.sql.PreparedStatement.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 759
    Points : 574
    Points
    574
    Par défaut import
    Bonjour et merci pour vos réponses !

    Voici les imports :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import com.mysql.jdbc.PreparedStatement;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    Quand l'import est manquant, NetBeans le signale et nous propose de créer l'appel.

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Là tu as une référence à une implémentation de l'interface java.sql.PreparedStatement, ce qui n'est pas bon, si tu portais ton code sur une autre base de données, ça ne fonctionnerait plus.
    Remplace l'import par la valeur "java.sql.PreparedStatement"

  6. #6
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    bonjour

    ce n'est pas "com.mysql.jdbc.PreparedStatement" mais "java.sql.PreparedStatement" qu'il faut comme import !

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur java, .Net
    Inscrit en
    Janvier 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur java, .Net

    Informations forums :
    Inscription : Janvier 2011
    Messages : 55
    Points : 71
    Points
    71
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import java.sql.PreparedStatement;
    Tu devrais utiliser cet import pour les PreparedStatement à la place de celui celui de mysql.

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 759
    Points : 574
    Points
    574
    Par défaut
    Exact !

    C'était donc l'import qui était faux.

    Merci à tous !!!


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

Discussions similaires

  1. Formule dans Formulaire: ne fonctionne pas
    Par Laure041 dans le forum IHM
    Réponses: 4
    Dernier message: 10/04/2008, 10h56
  2. [EJB3] [WEBLOGIC] Injection dans WebService ne fonctionne pas
    Par pmartin8 dans le forum Java EE
    Réponses: 2
    Dernier message: 15/11/2007, 21h02
  3. Réponses: 3
    Dernier message: 19/09/2007, 13h09
  4. [VBA-E] SetFocus sur TextBox dans UserForm_Initialize ne fonctionne pas ?
    Par Jipété dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 27/11/2006, 11h39
  5. Réponses: 23
    Dernier message: 07/02/2006, 08h43

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