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

avec Java Discussion :

Ecrire dans une table déjà existante


Sujet :

avec Java

  1. #1
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 63
    Points : 154
    Points
    154
    Par défaut Ecrire dans une table déjà existante
    Bonjour,

    Je souhaite écrire une chaine de caractères et/ou une variable numérique dans une table en passant par une méthode sous Java.

    Voici mon 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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
        public static void chaine(String fichier_original, String fichier_final,String debut_chaine,String fin_chaine) 
        {
            try
            {
                try
                {
                    BufferedReader br = new BufferedReader (new FileReader(fichier_original));
                    try
                    {
                        String ligne;
                        boolean debut_trouve = false;
                        boolean finTrouve =false;
                        while (((ligne=br.readLine()) !=null))
                        {
                            if ((debut_trouve ==  false)||(finTrouve==false))
                            {
                                if (ligne.indexOf(debut_chaine)!= -1)
                                {
                                    int pos1= ligne.indexOf(debut_chaine) + debut_chaine.length();
                                    int pos2= ligne.indexOf(fin_chaine);
                                    String cheval = ligne.substring(pos1, pos2);
                                    System.out.println(cheval);
                                }
                            }
                        }
                    }
                    finally
                    {
                        br.close();
                    }
                }
                catch (IOException ioe)
                {
                //fermeture des flux
                System.out.println("Erreur --" + ioe.toString());
                }
            }
            finally
            {
                //connexion.close();    
            }
        }
    Cette méthode est appelée à partir d'une méthode globale, dans l'état actuel, je viens écrire dans la console, la variable string qui s'appelle cheval, et elle fonctionne. Cependant, je n'arrive pas à trouver ici et en général sur le net, une explication claire et relativement pédagogique (histoire de comprendre ce que je fais), pour appeler une table (qu'on appellera ici "partant_quinte") se situant dans une base de données nommée "hippique" et qui existe déjà. J'utilise comme SGBD, MySQL, en root sans mot de passe.

    Ca peut paraître tordu comme projet de récupérer les partants d'une course, mais si j'arrive à le faire pour ce string, je serais capable de le faire pour ressortir les pronostiqueur, déterminer les nombres de fois qu'ils sont appelés dans les pronostics, récupérer en routine les informations sur plusieurs sites, recoupés plusieurs informations, type de course, température, définir une fiabilité par pronostiqueur en fonction du terrain du type de course, de l'entraineur, de l'historique du cheval, du jockey etc. Mais là, je bloque.

    J'ai installé la librairie MySQL sur Eclipse.

    Quelqu'un saurait-il me guider un peu ?

    Merci d'avance pour votre aide.

  2. #2
    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,

    En cherchant un peu ici, tu aurais trouver les tuto te permettant d'accéder a une base de données :
    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

  3. #3
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 63
    Points : 154
    Points
    154
    Par défaut
    Merci j'avoue, j'ai vu sur les tutos cette nuit vers 1h00 que je faisais la recherche seulement sur le forum, ce soir je testerai le tutoriel sur java et mysql et les liens que tu viens de me donner

    Merci

  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
    Bonjour,

    Je viens de regarder vite fait ton code.

    Je m'apperçoit que tu as imbriqué pleins de try mais que tu n'as qu'un seul catch.

    Je pense que tu peux ne garder que le premier try et donc effacer les 2eme et 3eme try. Puis tu as un finally en trop aussi c'est le premier finally que tu devrais effacer.

    Ensuite, tu place le catch et le finally à la fin. Toujours cet ordre : try, catch, finally --> en gros, tu essaie ("try") un code qui pourrait probablement remonter des erreurs. Si il y a une erreur, le code stoppe sa lecture du try instantanément et c'est le catch qui est lu à la place du code situé après l'erreur dans le try. Ensuite, erreur ou pas erreur, on finit par lire le finally ... dans tous les cas !!!
    Après, si tu dois catcher plusieurs erreurs, soit tu mets plusieurs catch, soit tu déclarte plusieurs erreur à catcher dans un seul catch ... mais en ne gardant qu'un seul try et un seul finally. Le finally, c'est ce qui sera toujours lu ! même si tu as une erreur catchée par le catch, le finally sera automatiquement appliqué.
    tu catches ce que je dis ?


    Je l'ai un peu modifié, dis moi si tu as des erreurs avec ça :

    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
    33
    34
    35
    	public static void chaine(String fichier_original, String fichier_final,String debut_chaine,String fin_chaine) 
        {
    		BufferedReader br = null;
            try
            {
                br = new BufferedReader (new FileReader(fichier_original));
     
                String ligne;
                boolean debut_trouve = false;
                boolean finTrouve =false;
                while (((ligne=br.readLine()) !=null))
                {
                    if ((debut_trouve ==  false)||(finTrouve==false))
                    {
                        if (ligne.indexOf(debut_chaine)!= -1)
                        {
                            int pos1= ligne.indexOf(debut_chaine) + debut_chaine.length();
                            int pos2= ligne.indexOf(fin_chaine);
                            String cheval = ligne.substring(pos1, pos2);
                            System.out.println(cheval);
                        }
                    }
                }
                br.close();
            }
            catch (IOException ioe)
            {
            //fermeture des flux
            System.out.println("Erreur --" + ioe.toString());
            }
            finally
            {
            	//connexion.cloas(); 
            }
        }
    OS : LinuxMint 20

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par francky74 Voir le message
    Je m'apperçoit que tu as imbriqué pleins de try mais que tu n'as qu'un seul catch.

    Je pense que tu peux ne garder que le premier try et donc effacer les 2eme et 3eme try. Puis tu as un finally en trop aussi c'est le premier finally que tu devrais effacer.
    Non.
    Il y a bien un finally inutile (pour le connexion.close() en commentaire), mais sinon le code est très bien comme cela.
    Cela permet de s'assurer que les ressources seront bien libéré dans tous les cas, ce qui n'est pas le cas de ton code.

    Avant Java 7 et le try-with-ressource, la meilleure solution pour libérer les ressources consiste à utiliser un try/finally par ressource.
    Le tout sans catch. Si on a besoin de traiter les exceptions on utilise un try/catch qui englobe le tout.


    a++

  6. #6
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 63
    Points : 154
    Points
    154
    Par défaut
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    package MySQL;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    public class ecriture 
    {
    	  private static void arret(String message) 
    	  {
    	    System.err.println(message);
    	    System.exit(99);
    	  }
    	public static void main(String info, String tableau, String colonne) 
    	{
    		// TODO Auto-generated method stub
    	    Connection con = null;
    	    String requete = "";
    	    // chargement du pilote
        try 
        	{
            	Class.forName("org.gjt.mm.mysql.Driver").newInstance();
        	} 
        catch (Exception e) 
        	{
            	arret("Impossible decharger le pilote jdbc pour mySQL");
        	}
          //connexion a la base de données
          try 
          	{
    	        String DBurl = "jdbc:mysql://localhost/hippique";
    	        con = DriverManager.getConnection(DBurl,"root","");
          	} 
          catch (SQLException e) 
          	{
        	  	arret("Connexion a la base de donnees impossible");
          	}
          //creation et execution de la requête
    		//saisie des chevaux partant
    	      requete = "INSERT INTO `hippique`.`"+tableau+"` (`numéro`, `"+colonne+"`, `Jockey`, `Entraineur`, `appelpremiereposition`, `appeldeuxiemeposition`, `appeltroisiemeposition`, `appelquatriemeposition`, `appelcinquiemeposition`, `appelsixiemeposition`, `totalappel`) VALUES ('1', '"+info+"', 'jockey', 'entraineur', '1', '2', '3', '4', '5', '6', '8')";
    	      System.out.println(info+" "+tableau+" "+colonne);
          /* Exécution d'une requête d'écriture */
          try 
          	{
    	        Statement stmt = con.createStatement();;
    	        int statut = stmt.executeUpdate(requete);
          	} 
          catch (SQLException e) 
          	{
        	  	arret("Anomalie lors de l'execution de la requete");
          	}
    	}
     
    }
    Voici une méthode que j'appelle qui fonctionne presque.
    Je commence par ce qui marche :
    - ma connexion vers ma base fonctionne
    - la requête fonctionne
    - les variables info, tableau et colonne sont correctement rapatrier de ma procédure d'origine vu que j'arrive à exécuter ma requête
    Ce qui ne fonctionne pas :
    - lorsque ma variable info comporte un espace cela ne fonctionne pas, hier ma variable comportait un espace et du coup, aucune écriture, aujourd'hui, ma première variable ne comporte pas d'espace, elle est correctement écrite dans ma base, en revanche au second tour, la variable comporte un espace, et ça plante, le truc s'est que j'ai récupéré un bout de code ici et là et je ne sais pas comment faire pour voir l'erreur réel dans le catch, soit c'est l'espace qui pose prose problème, soit, un souci avec ma connexion apparaît ou bien une mauvaise configuration de ma colonne lors de la création du tableau.

    PS le nombre de tour à faire dépends des jours mais il est au minimum de 8 fois, la colonne indexée est celle du numéro, à la base mon tableau est vide

    Petite question subsidiaire : suis-je obligé d'écrire la totalité de la requête comme je le fais, sachant que je je veux ajouter à chaque nouvelle ligne seulement le l'info sur une colonne précise ? (le reste des données seront mis plus tard sous forme de mise à jour)

    Merci

  7. #7
    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
    Bonjour !!


    Citation Envoyé par adiGuba Voir le message
    Citation Envoyé par francky74 Voir le message
    Je m'apperçoit que tu as imbriqué pleins de try mais que tu n'as qu'un seul catch.

    Je pense que tu peux ne garder que le premier try et donc effacer les 2eme et 3eme try. Puis tu as un finally en trop aussi c'est le premier finally que tu devrais effacer.
    Non.
    Il y a bien un finally inutile
    Je ne comprends pas en quoi les 3 try imbriqués ne seraient pas de trop ? Pouvez-vous expliquer s'il vous plaît ?
    Pourquoi vouloir garder 3 try (au lieu d'un seul) lorsqu'il n'y qu'un seul catch ?

    @zigomato :

    Et pour les espaces, vois avec la fonction TRIM dans ce tuto :
    http://sheikyerbouti.developpez.com/pl_sql/?page=Chap3

    Lorsque tu écris le nom d'une classe, ici la classe éecriture', il faut toujours utiliser une majuscule en premier. Ce qui donnerait 'Ecriture' ... c'est une convention. Tu peux utiliser une minuscule, cela fonctionnera, mais il y a des conventions entre tous les programmeurs pour prendre des habitudes, donc le mieux c'est de les respecter.

    Bonne soirée,
    OS : LinuxMint 20

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    @zigomato laisses remonter l'exception au lieu de la catcher.
    Tu auras alors le stacktrace complet de l'erreur...


    Au passage tu ne libères pas les ressources (contrairement à ton premier code).


    Citation Envoyé par francky74 Voir le message
    Je ne comprends pas en quoi les 3 try imbriqués ne seraient pas de trop ? Pouvez-vous expliquer s'il vous plaît ?
    Pourquoi vouloir garder 3 try (au lieu d'un seul) lorsqu'il n'y qu'un seul catch ?
    Parce que cela ne sert pas à la même chose :
    • Les try/finally servent à libérer proprement les ressources (quoi qu'il arrive).
    • Le try/catch sert à gérer les exceptions (si besoin).


    Avant Java 7 et le try-with-ressource, la meilleure manière de libérer proprement les ressources consiste à utiliser un try/finally par ressource.
    Les autres solutions sont soit encore plus verbeuses, soit moins fiable...


    Par exemple dans le code que tu donnes, le fichier ne sera pas fermé lorsqu'une exception survient.


    a++

  9. #9
    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
    @adiguba :

    OK, merci !

    Donc, en fait pour résumer, comme il a utilisé un catch et deux finally, il fallait donc trois try !

    Bonne soirée,
    OS : LinuxMint 20

  10. #10
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 63
    Points : 154
    Points
    154
    Par défaut
    Citation Envoyé par francky74 Voir le message

    Et pour les espaces, vois avec la fonction TRIM dans ce tuto :
    http://sheikyerbouti.developpez.com/pl_sql/?page=Chap3
    euh, je veux bien l'utiliser mais deux soucis se pose :
    1. je ne veux pas supprimer l'espace présent dans la variable String, du coup, je ne comprends pas comment elle fonctionne
    2. pour la syntaxe, dis moi si je me trompe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    requete = "INSERT INTO `hippique`.`"+tableau+"` (`numéro`, `"+colonne+"`, `Jockey`, `Entraineur`, `appelpremiereposition`, `appeldeuxiemeposition`, `appeltroisiemeposition`, `appelquatriemeposition`, `appelcinquiemeposition`, `appelsixiemeposition`, `totalappel`) VALUES ('1', TRIM( "+info+"), 'jockey', 'entraineur', '1', '2', '3', '4', '5', '6', '8')";
    Mais du coup avec cette syntaxe si je comprends bien ma variable string qui à la base contient un espace n'en contiendra plus après

  11. #11
    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
    Citation Envoyé par zigomato Voir le message
    je ne veux pas supprimer l'espace présent dans la variable String
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    requete = "INSERT INTO `hippique`.`"+tableau+"` (`numéro`, `"+colonne+"`, `Jockey`, `Entraineur`, `appelpremiereposition`, `appeldeuxiemeposition`, `appeltroisiemeposition`, `appelquatriemeposition`, `appelcinquiemeposition`, `appelsixiemeposition`, `totalappel`) VALUES ('1', TRIM( "+info+"), 'jockey', 'entraineur', '1', '2', '3', '4', '5', '6', '8')";
    Mais du coup avec cette syntaxe si je comprends bien ma variable string qui à la base contient un espace n'en contiendra plus après
    Tu ne veux pas supprimer l'espace qui est enregistré dans la table si je comprends bien. Donc il ne faut pas utiliser le TRIM pour stocker.
    Par contre, l'espace te gêne pour la comparaison, donc il faut utiliser le TRIM pour la comparaison. Si j'ai bien compris !

    Dans ta requête, c'est une insertion (INSERT INTO) donc tu ne dois pas y mettre le TRIM si tu veux garder les espaces en stockage dans la BDD.
    Je dirais même plus, ta classe "Ecriture" est faite pour écrire, et donc ce n'est pas dans cette classe qu'il te faut mettre le TRIM.

    Je ne sais pas où-est-ce que tu fait la comparaison, mais c'est dans la comparaison que tu dois mettre le TRIM.
    OS : LinuxMint 20

  12. #12
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 63
    Points : 154
    Points
    154
    Par défaut
    En faite, ma table est vide à la base, donc pas de comparaison pour l'instant je veux juste insérer ma nouvelle entrée

  13. #13
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Affiche ton SQL : il est mal formé car il n'y a pas de quote autour de la chaine...


    Au passage il serait nettement préférable d'utiliser un PreparedStatement, pour éviter ce genre de soucis ou de l'injection SQL...


    a++

  14. #14
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 63
    Points : 154
    Points
    154
    Par défaut
    Citation Envoyé par adiGuba Voir le message

    Affiche ton SQL : il est mal formé car il n'y a pas de quote autour de la chaine...
    Salut, je ne comprends pas,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    requete = "INSERT INTO `hippique`.`"+tableau+"` (`numéro`, `"+colonne+"`, `Jockey`, `Entraineur`, `appelpremiereposition`, `appeldeuxiemeposition`, `appeltroisiemeposition`, `appelquatriemeposition`, `appelcinquiemeposition`, `appelsixiemeposition`, `totalappel`) VALUES ('1', '"+info+"', 'jockey', 'entraineur', '1', '2', '3', '4', '5', '6', '8')";
    autour de info, il y a le + pour ajouter la variable, les " pour sortir de l'insert et y rerentrer et les quotes y sont.

    Petite question, je ne suis pas sur mon poste où j'ai accès à ma base sql mais il me semble que le type de la colonne où j'insère la variable info est TEXT, sachant que ma variable peut contenir des espaces, je ne devrais pas utiliser plutôt une colonne qui est en CHAR (jamais ma variable ne fera plus de 255 caractère) ?

  15. #15
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Les quotes sont absente du code SQL utilisant TRIM...


    a++

  16. #16
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 63
    Points : 154
    Points
    154
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Les quotes sont absente du code SQL utilisant TRIM...
    a++
    Ah merci, je ne l'avais pas testé mais si j'ai bien compris, la fonction TRIM permet de supprimer les espaces dans ma chaîne lors de comparaison, je l’utiliserai plus tard, mais là je ne veux pas comparer mais insérer une nouvelle ligne avec une variable qui contient un espace.

  17. #17
    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,
    as tu essayé ceci:
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    package MySQL;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    public class ecriture 
    {
    	  private static void arret(String message) 
    	  {
    	    System.err.println(message);
    	    System.exit(99);
    	  }
    	public static void main(String info, String tableau, String colonne) 
    	{
    		// TODO Auto-generated method stub
    	    Connection con = null;
    	    String requete = "";
    		PreparedStatement preparedStatement = null;
    	    // chargement du pilote
        try 
        	{
            	Class.forName("org.gjt.mm.mysql.Driver").newInstance();
        	} 
        catch (Exception e) 
        	{
            	arret("Impossible decharger le pilote jdbc pour mySQL");
        	}
          //connexion a la base de données
          try 
          	{
    	        String DBurl = "jdbc:mysql://localhost/hippique";
    	        con = DriverManager.getConnection(DBurl,"root","");
          	} 
          catch (SQLException e) 
          	{
        	  	arret("Connexion a la base de donnees impossible" + e.message());
          	}
          //creation et execution de la requête
    		//saisie des chevaux partant
    	      requete = "INSERT INTO hippique."+tableau+" (numéro, "+colonne+", Jockey, Entraineur, appelpremiereposition, appeldeuxiemeposition, appeltroisiemeposition, appelquatriemeposition, appelcinquiemeposition, appelsixiemeposition, totalappel) 
    		  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
    	      System.out.println(info+" "+tableau+" "+colonne);
          /* Exécution d'une requête d'écriture */
          try 
          	{
    		    preparedStatement =con.prepareStatement(requete);
    			preparedStatement.setString(1, "1");
    			preparedStatement.setString(2, info);
    			preparedStatement.setString(3, "jockey");
    			preparedStatement.setString(4, "entraineur");
    			preparedStatement.setString(5, "1");
    			preparedStatement.setString(6, "2");
    			preparedStatement.setString(7, "3");
    			preparedStatement.setString(8, "4");
    			preparedStatement.setString(9, "5");
    			preparedStatement.setString(10, "6");
    			preparedStatement.setString(11, "8");
     
     
    			// executer la requete SQL
    			preparedStatement.executeUpdate();
     
          	} 
          catch (SQLException e) 
          	{
        	  	arret("Anomalie lors de l'execution de la requete" + e.message());
          	}
    	}
     
    }
    eric

  18. #18
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Par contre ce code avec des try/catch toutes les deux lignes est affreux à lire.
    Pourquoi ne pas simplement laisser l'exception remonter ???


    a++

  19. #19
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 63
    Points : 154
    Points
    154
    Par défaut
    jeffray03, ok merci, je la teste ce soir, avec ce que tu propose, je peux ne pas venir remplir certaines colonnes alors ?

    Dans ma table ma première colonne est auto-incrémentée et indéxée, ce que tu me propose là est de lui attribuer une valeur à chaque fois ?

    Et comment supprimer le system.exit(99), même si il y a eu une erreur, je voudrais juste qu'il sorte de cette procédure pour revenir à celle d'où je l'ai appelé

  20. #20
    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
    tu peux tres bien le faire,
    il suffit de mettre ces colonnes dans ta requetes.
    si ton Id est auto_increment alors tu ne la mets pas dans ta requete.
    Ex: table course(id auto_increment, nom)
    sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      insert into course(nom)
      values(?);
    Eric

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] Ecrire dans une table à l'intérieur d'une boucle
    Par zigzagbe dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 19/08/2008, 23h40
  2. Réponses: 2
    Dernier message: 11/08/2008, 10h00
  3. ecrire dans une table
    Par Abla23 dans le forum Zope
    Réponses: 13
    Dernier message: 27/09/2006, 09h49
  4. [VBA-E]Comment faire pour écrire dans une page excel existante ?
    Par pauletta22 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/05/2006, 13h54
  5. [MySQL] ecrire dans une table une info présente dans un formulaire.
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 29/03/2006, 00h45

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