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
    757
    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 : 757
    Points : 572
    Points
    572
    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 !?!

    OS : LinuxMint 20

  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 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    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.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    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 : 757
    Points : 572
    Points
    572
    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.
    OS : LinuxMint 20

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    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"
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  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 !
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  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
    757
    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 : 757
    Points : 572
    Points
    572
    Par défaut
    Exact !

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

    Merci à tous !!!

    OS : LinuxMint 20

+ 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