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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    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
    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
    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 éclairé
    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
    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 éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    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 : 764
    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(); 
            }
        }

  5. #5
    Expert éminent
    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
    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 éclairé
    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
    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

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

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