Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1644 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Récupérer un tableau d'une fonction

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Récupérer un tableau d'une fonction

n°1847633
wifsimster
Turns your mind towards BeTa
Posté le 05-02-2009 à 16:21:47  profilanswer
 

Bonjour,
J'aimerai savoir comment pouvoir récupérer le tableau que me retourne ma fonction JAVA.

Code :
  1. public int[] DateDeNaissance() throws SQLException
  2. {
  3.    String sql = "SELECT DATEDIFF(NOW(),Date_naissance)/365.25 FROM usager;";
  4.    Statement stmt = con.createStatement();
  5.    ResultSet r = stmt.executeQuery(sql);
  6.    int[] age = null;
  7.    int indice = 0;
  8.    String dateNaissance = null;
  9.    
  10.    while(r.next())
  11.    {
  12.        indice = indice + 1;
  13.        dateNaissance = r.getString(1);
  14.        float conversion = Float.parseFloat(dateNaissance);
  15.        age[indice] = (int) conversion;
  16.    }
  17.    
  18.    return age;
  19. }


J'ai essayé plusieurs manière, dont :
 
System.arraycopy(DateDeNaissance(), 0, age, 0, DateDeNaissance().length);
 
Toujours avec une erreur de java.lang.NullPointerException.


Message édité par wifsimster le 05-02-2009 à 16:31:42

---------------
-- Turns your mind towards BeTa --
mood
Publicité
Posté le 05-02-2009 à 16:21:47  profilanswer
 

n°1847638
masklinn
í dag viðrar vel til loftárása
Posté le 05-02-2009 à 16:28:00  profilanswer
 

Faudrait ptet songer à le créer, à un moment, ton tableau, dans ta méthode [:petrus75]

 

Non parce que int[] age = null; t'es gentil mais ça crée pas un tableau [:petrus75]

 

Accessoirement, ce code est pas franchement propre, et faut utiliser les balises [ code=java] et [ /code] pour que ce soit lisible. [:petrus75]

 

Et faudrait lire le style guide, parce que les méthodes en java ça se nomme pas en PascalCase mais en camelCase. [:petrus75]


Message édité par masklinn le 05-02-2009 à 16:32:41

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1847644
wifsimster
Turns your mind towards BeTa
Posté le 05-02-2009 à 16:34:16  profilanswer
 

Désolé j'ai rectifié la mise en page ^^'
Je suppose que tu veux de me parler d'instancier mon tableau par t'es détours ...


---------------
-- Turns your mind towards BeTa --
n°1847645
masklinn
í dag viðrar vel til loftárása
Posté le 05-02-2009 à 16:35:15  profilanswer
 

wifsimster a écrit :

Je suppose que tu veux de me parler d'instancier mon tableau par t'es détours ...


Uniquement pour les lignes 1 et 2.
 
Et je pourrais ajouter que j'aurais tendance à utiliser une List plutôt qu'un array.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1847649
wifsimster
Turns your mind towards BeTa
Posté le 05-02-2009 à 16:38:11  profilanswer
 

Ce que je veux c'est simplement récupérer une liste d'âge donc un tableau ou une liste ...
Si tu me trouve une méthode plus simple et qui marche pour un élément de type List. Je suis preneur !


---------------
-- Turns your mind towards BeTa --
n°1847659
masklinn
í dag viðrar vel til loftárása
Posté le 05-02-2009 à 16:50:30  profilanswer
 

Identique à la méthode pour un array, tu crées ton conteneur, et tu mets des éléments dedans. L'avantage d'une liste étant qu'elle a une taille variable, alors que l'array a une taille fixe à partir du moment où il a été instancié.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1847722
Anonymouse
Posté le 05-02-2009 à 19:58:08  profilanswer
 

Code :
  1. public List<Integer> DateDeNaissance() throws SQLException
  2. {
  3.    String sql = "SELECT DATEDIFF(NOW(),Date_naissance)/365.25 FROM usager;";
  4.    Statement stmt = con.createStatement();
  5.    ResultSet r = stmt.executeQuery(sql);
  6.    List<Integert> age = new ArrayList<Integer>();
  7.    int indice = 0;
  8.    String dateNaissance = null;
  9.    
  10.    while(r.next())
  11.    {
  12.        indice = indice + 1;
  13.        dateNaissance = r.getString(1);
  14.        float conversion = Float.parseFloat(dateNaissance);
  15.        age.add((int) conversion);
  16.    }
  17.    
  18.    return age;
  19. }


 
Ca doit te donner un truc de se genre. Mias j'ai pas testé le code modifié.

n°1847786
wifsimster
Turns your mind towards BeTa
Posté le 06-02-2009 à 08:10:42  profilanswer
 

Juste une faute de frappe à la 6° ligne sinon je teste ça ...
 
Edit : Ça marche nickel et c'est plus simple; Merci beaucoup ;)


Message édité par wifsimster le 06-02-2009 à 08:28:07

---------------
-- Turns your mind towards BeTa --
n°1848216
el muchach​o
Comfortably Numb
Posté le 06-02-2009 à 23:55:19  profilanswer
 

N'oublie pas le le stmt.close() avant le return, sinon tu as une jolie fuite de ressource. D'ailleurs, il faut p-ê songer à mettre tout ce code dans un try {...}catch() finally{stmt.close();} pour le cas où pèterait une exception :
- lors de l'executeQuery,
- sur le parseFloat (qui peut avoir n'importe quoi comme entrée, même un null, si getString tape sur une colonne de la table qui n'est pas NOT NULL. Vérifier les contraintes appliquées sur chaque colonne de la table).

 

Et utilise setFetchSize() et  PreparedStatement  pour optimiser la performance.

 

Voici une version plus robuste et (bcp) plus rapide de ton code

Code :
  1. void mapResultSet(ResultSet rs, List<Integer> ageList ) {
  2.    try {
  3.         String age= rs.getString(1);
  4.         if (age != null) {  // on suppose que la colonne n'est pas NOT NULL
  5.              Float conversion = Float.valueOf(age);
  6.              ageList.add(conversion.intValue());
  7.         }
  8.    }
  9.     catch(NumberFormatException e) {
  10.            // traitement erreur
  11.    }
  12. }
  13.  
  14. public List<Integer> fetchAgeList() throws SQLException
  15. {
  16.    String sql = "SELECT DATEDIFF(NOW(),Date_naissance)/365.25 FROM usager";
  17.    List<Integert> ageList = new ArrayList<Integer>();
  18.  
  19.    PreparedStatement stmt = con.prepareStatement(sql);
  20.    try {
  21.        stmt.setFetchSize(50);
  22.        ResultSet r = stmt.executeQuery();
  23.        while(r.next()){
  24.           mapResultSet(r, ageList );
  25.       }
  26.    }
  27.    finally {
  28.        stmt.close();
  29.    }
  30.  
  31.    return ageList;
  32. }


Message édité par el muchacho le 07-02-2009 à 07:33:53

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Récupérer un tableau d'une fonction

 

Sujets relatifs
[RESOLU] Aligner verticalment un tableaurécupérer le texte d'un champ, le vérifier et en faire un mailTo
javascript : récupérer valeur champs dans une autre pageIntégrer 2 animation flash en fonction des paramètres de l'url
Intégrer 2 animation flash en fonction des paramètres de l'urlAS2 : faire un "callback" dans une fonction
Tableau phpinteret fonction void
recuperer numero de ligne tableau 
Plus de sujets relatifs à : Récupérer un tableau d'une fonction


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR