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

  1. #1
    Membre à l'essai
    Ajouter une requête dans une table MySQL avec Java 1.8
    Bonjour j'ai déjà posté une question similaire mais sans avoir eu les réponses pour m'aider à résoudre mon problème.

    Je souhaiterai remplir une table déjà créee sur la MySQL 5.7 Command Line Client et contenant déjà quelques lignes à partir de Java 1.8.
    Ma BDD s'appelle Gestion_analyses et ma table En_attente. La connexion est bien établies puisque j'arrive à faire d'autres actions comme récupérer les données de ma table, mais je n'arrive pas à écrire de requêtes dedans ...
    Voilà ce que j'ai essayé en cherchant sur des forums et en important toutes les bibliothèques requises :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
         String req = "INSERT INTO En_attente(id, nom) VALUES(?,?)"; 
     
     
                   try (Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/gestion_analyses","root","mdp");
                   Statement state = conn.createStatement();
     
                   PreparedStatement statement = conn.prepareStatement(req); 
                   statement.setObject(1,"toto"); 
                   statement.setObject(2,"titi");  
                   statement.executeUpdate();


    Les 3 dernières lignes sont directement considérées comme des erreurs cette fois aussi : 'variables in try-with-ressources not supported in-source 1.8 , use -source 9'

    Je comprends bien que c'est un soucis de version Java mais je l'ai installé très récemment et je ne changerai pas puisque tout mon code concernant l'application que je souhaite créer a été fait avec cette version .... Y a t-il un moyen de contourner ce problème ?

    Je vous remercie d'avance

  2. #2
    Modérateur

    Ce n'est pas la bonne syntaxe pour le try with resources
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    try
    (Connection conn = DriverManager.getConnection(url, user, password)<img src="images/smilies/icon_wink.gif" border="0" alt="" title=";)" class="inlineimg" />
    {
        // là tu utilises l'objet conn...   
    }
     catch (Exception e)
    {
         e.printStackTrace();
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Citation Envoyé par OButterlin Voir le message
    Ce n'est pas la bonne syntaxe pour le try with resources
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    try
    (Connection conn = DriverManager.getConnection(url, user, password)<img src="images/smilies/icon_wink.gif" border="0" alt="" title=";)" class="inlineimg" />
    {
        // là tu utilises l'objet conn...   
    }
     catch (Exception e)
    {
         e.printStackTrace();
    }

    Merci OButterlin, mais je n'ai pas mis tout mon programme ici, comme c'est pour une entreprise donc une partie est confidentiel mais je n'ai aucun soucis pour le try, la connexion est bine établie avec ma base de données et j'extrait même des données à un moment mais c'est vraiment la partie rédaction d'une requête qui me pose problème comme je l'ai expliqué : le ExecuteUpdate se souligne automatiquement comme une erreur donc impossible de lancer le code ...

  4. #4
    Modérateur

    Ok, mais à trop en enlever, on ne voit pas le lien avec les ressources du try, du coup, je ne vois pas trop ce qui pose problème.

    La logique voudrait que tu ais une séquence comme celle-ci
    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
     
    String req = "insert into ...";
    try
    (
       Connection conn = DriverManager.getConnection(url, user, password);
       PreparedStatement statement = connection.prepareStatement(req);
    )
    {
       statement.setObject(1, valeur1);
       statement.setObject(2, valeur2);
       statement.executeUpdate();
    }
     catch (Exception e)
    {
       e.printStackTrace();
    }

    A noter qu'il serait plus judicieux d'utiliser les setXXX appropriés au type de la colonne, ici setString(1, "toto"); d'après ton exemple.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre à l'essai
    Citation Envoyé par OButterlin Voir le message
    Ok, mais à trop en enlever, on ne voit pas le lien avec les ressources du try, du coup, je ne vois pas trop ce qui pose problème.

    La logique voudrait que tu ais une séquence comme celle-ci
    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
     
    String req = "insert into ...";
    try
    (
       Connection conn = DriverManager.getConnection(url, user, password);
       PreparedStatement statement = connection.prepareStatement(req);
    )
    {
       statement.setObject(1, valeur1);
       statement.setObject(2, valeur2);
       statement.executeUpdate();
    }
     catch (Exception e)
    {
       e.printStackTrace();
    }

    A noter qu'il serait plus judicieux d'utiliser les setXXX appropriés au type de la colonne, ici setString(1, "toto"); d'après ton exemple.

    Merci OButterlin, je n'ai pas dû être assez claire et je m'en excuse, je comprend bien ce que tu me proposes mais mon soucis c'est que lorsque je tape les lignes de code contenant le SetObject ou Set String comme tu m'as proposé, et la ligne du executeUpdate, elle se souligne automatiquement en rouge avec le message suivant lié : 'variables in try-with-ressources not supported in-source 1.8 , use -source 9' donc impossible de lancer mon programme. Donc j'aimerai savoir s'il n'y a pas une autre syntaxe pour la version de Java que j'utilise ou comment contourner cette erreur pour pouvoir lancer mon programme et écrire une requête. Car sur les autres forums dans lesquels j'ai cherché, je trouve toujours une syntaxe similaire à ce que tu me proposes mais que je ne peux donc pas utiliser ...

    Encore merci pour ton aide.

  6. #6
    Modérateur

    Il doit y avoir un autre problème parce que j'ai fait le test avec java 1.8 et ça fonctionne parfaitement.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java