Changement de type en Java

Résolu
titfofol Messages postés 172 Date d'inscription   Statut Membre Dernière intervention   -  
sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour tout le monde,

Alors voila, j'aimerai savoir comment on change de type d'une variable en java...

En fait j'ai un fichier .class qui me permet de faire une connexion jdbc et qui exécute une requete. J'aimerai renvoyer le résultat de celle-ci dans ma servlet. Mais voila je voudrais que la variable renvoyée soit de type tableau, pour pouvoir l'afficher correctement dans ma page html...

Comment pourrais-je faire?!

Merci de m'aider...

Titfofol
A voir également:

22 réponses

sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
merveilleux ;-)
1
sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
Salut,

Tu exécutes la requête. Habituellement, il s'agit d'un objet Statement ou PreparedStatement. La méthode executeQuery() te retourne un ResultSet, rs.

Tu feras qqchose du genre
while (rs.next ()) {
  // ici tu accèdes à ton result set. Exemple:
 String machinTruc  = rs.getString("nomColonneMachinTrucDansLaBase");
  // et ici tu peux rajouter des objets à une List préalablement déclarée et initialisée avant la boucle
  // tu peux ajouter tout ce que tu veux, même des objets faits maison
  maList (add (new ObjetMaison(machinTruc));
}
Voilà... Si tu as absolument besoin d'un tableau à la place de la liste, une fois que la liste est remplie (à la fin de la boucle while), tu vas déclarer un tableau de taille maList.size() et tu l'initialiseras avec le contenu de la liste.

hth,
++
0
titfofol Messages postés 172 Date d'inscription   Statut Membre Dernière intervention   9
 
Bonsoir,

Excuse moi mais, comme je suis débutante (plus précisément étudiante en stage) en java, j'ai un peu de mal à te suivre... pourrais-tu m'expliquer avec un peu plus de détail s'il te plait... :D

Merci d'avance

Titfofol

PS: J'aimerai quand même tout stocker dans un tableau car après je devrais tout afficher dans une page jsp...
0
titfofol Messages postés 172 Date d'inscription   Statut Membre Dernière intervention   9
 
La où tu as mit la ligne de code :
String machinTruc = rs.getString("nomColonneMachinTrucDansLaBase");

est- il possible de mettre :

String machinTruc[1] = rs.getString("champs1");
String machinTruc[2] = rs.getString("champs2");
String machinTruc[3] = rs.getString("champs3");
???

Comme ca ca me remplit un tableau ensuite je pourrai mettre tout cela dans ma servlet pour pouvoir lafficher avec ma jsp (en html)

Mais le truc, c'est que pour envoyer tout ce résultat dans ma servlet comment je fais?!

Je fais un truc du genre :

return machinTruc[]; ????

Titfofol
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
essai de réponse - bug CCM
0
titfofol Messages postés 172 Date d'inscription   Statut Membre Dernière intervention   9
 
oui c'est bon... je te vois!!! looll é toi, je conclue que tu me vois si?!

titfofol
0
titfofol Messages postés 172 Date d'inscription   Statut Membre Dernière intervention   9
 
ata je vois que le 6 mais pas le 7!!! y a un beans la non?!
0
sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
Bon, regarde les MP pour les messages perdus. J'essaie de répondre au post 4:

La où tu as mit la ligne de code :
String machinTruc = rs.getString("nomColonneMachinTrucDansLaBase");

est- il possible de mettre :

String machinTruc[1] = rs.getString("champs1");
String machinTruc[2] = rs.getString("champs2");
String machinTruc[3] = rs.getString("champs3");
???
<== oui, tout à fait

Comme ca ca me remplit un tableau ensuite je pourrai mettre tout cela dans ma servlet pour pouvoir lafficher avec ma jsp (en html) <== nous somme d'accord. Sauf qu'il va falloir savoir la taille de ce tableau au moment de la déclaration (cf. analyse message 3)

Mais le truc, c'est que pour envoyer tout ce résultat dans ma servlet comment je fais?!
Je fais un truc du genre :
return machinTruc[]; ????
<== pourquoi pas? C'est très bien come ça

++
0
titfofol Messages postés 172 Date d'inscription   Statut Membre Dernière intervention   9
 
C'est ou que l'on voit les messages perdus?!

Ok j'ai bien marqué comme je l'ai dit précédement mais bon, il dit que ma syntaxe est fausse...

Je pense que c'est dû à ma déclaration de machinTruc[];!!!!

je l'ai déclaré comme ça :
String TabQuery[];

Je pensais qu'il fallat que je donne une valeur dedans les [] mais bon même si il ne veut pas...

A oui au fait, je travail avec eclipse et tomcat...

Titfofol
0
sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
Hummm... résumons. Tu as ta servlet, right? Et dedans (ou bien dans une autre classe, mais dans la même machine virtuelle que la servlet), tu as la boucle de remplissage du tableau à partir du resultSet. OK jusqu'ici?

Du coup, au niveau de ta servlet tu as le tableau rempli après l'exécution de la requête. Poste le code, histoire de voir pourquoi il n'aime pas la déclaration de ton tableau.

Maintentant, ton souci est de voir comment tu retournes ces objets (dans ton tableau) vers l'interface Web, est-ce bien cela?

++
0
titfofol Messages postés 172 Date d'inscription   Statut Membre Dernière intervention   9
 
Noooonn!! hhihi

ma servlet me permet de récupérer ce que l'utilisateur à saisie ok?!

après je fais la connection avec mon fichier class (qui est ma connection avec ma BDD oracle)

c'est lui qui éxécute le requete, mais je ne sais pas comment mettre le tout dans mon tableau...

enfin, le résutat de ma requete c'est pour ca que je te demande s'il faut mettre comme ca :

Sring machinTruc[1] = rs.getString("champs1");
String machinTruc[2] = rs.getString("champs2");
String machinTruc[3] = rs.getString("champs3");

ca veut dire que ca stoquera dans le tableau c'est ca?!

mais d'abord il faut faire la déclaration du tableau moi j'ai fait :

String TabQuery[];


et à la fin tu fait un return mais return quoi?!

bon attend voila mon .class

package pf.cps.datasemp;

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

import oracle.jdbc.driver.OracleDriver;

public class ConnectionJDBCOracle {
public static void main(String[] args) throws SQLException{

}

public static String Requete(String Valeur throws SQLException{
String TabQuery[];

//Chargement des drivers
Driver monDriver = new OracleDriver();
DriverManager.registerDriver(monDriver);


//Mise en place de la connection
String url = "chemin URL";
String login = "Nom";
String password = "MDP";
Connection c = DriverManager.getConnection(url, login, password);

//Convertit la variable de type string en type char
//Constuction de la requete
Statement s = c.createStatement();
String Query = "select cpdt, lcpdt " +
"NomTABLE" +
"where ccip = '" + Valeur + "'";

ResultSet RS = s.executeQuery(Query);

//Exploitation de la requete
while(RS.next()){
//System.out.println(RS.getString(1));
//System.out.println(RS.getString(2));
TabQuery[1] = RS.getString(RS.getString(1));

}

//Fermeture de la conncetion
c.close();

return TabQuery[1];
}
}




et ca c'est ma servlet :

package PTruc;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import pf.cps.datasemp.ConnectionJDBCOracle;

public class Menu extends HttpServlet {

public void doGet (HttpServletRequest Req, HttpServletResponse Res) throws ServletException, IOException {
String Valeur = Req.getParameter("Ed_Rech_CIP");
//String Valeur = "3421529";

ConnectionJDBCOracle Connect = new ConnectionJDBCOracle();

try{
String ResultReq[] = Connect.Requete(ValeurCIP);
}

catch (SQLException se){

}


Res.setContentType("text/html");
PrintWriter out = Res.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>");
out.println("Résultat de la Requête");
out.println("</title>");
out.println("</head>");
out.println("<body>");
out.println("<caption>");
//out.println("Opération réussie");
out.println("</caption>");
out.println("</body>");
out.println("</html>");
}
}

Bon ce qui est après le catch c'est pour un test c'était pour voir si ca passé bien mon code.

Désolé si c'était long

titfofol
0
sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
oulà.... tant que ça...

Noooonn!! hhihi <== ben pourtant si.
ma servlet me permet de récupérer ce que l'utilisateur à saisie ok?! <== sommes d'accord.

après je fais la connection avec mon fichier class (qui est ma connection avec ma BDD oracle)
c'est lui qui éxécute le requete, mais je ne sais pas comment mettre le tout dans mon tableau...
enfin, le résutat de ma requete c'est pour ca que je te demande s'il faut mettre comme ca : <== n'essaie pas de m'embrouiller ;-) Ton code montre que depuis la servlet tu appelles bien Connect.Requete(ValeurCIP);

Donc, c'est c'que j'disais :p

Utilise par la suite dans les out.println() le tableau ResultReq. Mais du coup, telle que le truc se présente, je ne vois pas la nécessité d'avoir un tableau, une simple List aurait été suffisante.

Chuis navré, titfofol, mais ce sera tout pour tonight, faut que je plie bagage :-)

++
0
titfofol Messages postés 172 Date d'inscription   Statut Membre Dernière intervention   9
 
c'est bon j'ai trouvé!!!! il me manquait une ligne de code

TabQuery = new String[2];

enfin... par exemple...

Mais dit est-ce possible de compter le nombre de champs d'une requete?!

Comme je voudrais mettre chaque valeur d'un champs de l'enregistrement dans une cellule de tableau... tu vois ce que je veux dire?!

titfofol
0
titfofol Messages postés 172 Date d'inscription   Statut Membre Dernière intervention   9
 
a ok no problem bha peut etre a demain et bonne soirée à toi ;)

titfofol
0
sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
"Mais dit est-ce possible de compter le nombre de champs d'une requete?! " <== tu ne lis pas bien. ou tu zappes sans cesse. Essaie de te concentrer un peu.

C'est pour cela que je t'ai parlé d'une List à la place de ton tableau. relis le message perdu 3 réenvoyé par MP.

++
0
titfofol Messages postés 172 Date d'inscription   Statut Membre Dernière intervention   9
 
oui, mais, je t'ai demandé justement où je pouvais retrouver les messages perdu!! MP

titfofol
0
sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
MP abrège en 1er lieu "message privé", lol

Je le reposte:
Voyons si ça passe:

;-)

http://jguillard.d***.com/JDBC/1.html Attarde-toi sur les pages 4 et 5 de ce tuto
Un autre pour Oracle ici: http://www.cs.ubc.ca/~ramesh/cpsc304/tutorial/JDBC/jdbc1.htm­l

Oracle ne donne pas (je crois) aucune métadonnée permattant de savoir la taille du resultSet retourné ==> il faut:

- soit passer par un objet List (car il va adapter dynamiquement la taille au dur et à mesure)
- soit faire une requête supplémentaire pour avoir le nombre de lignes retournées (la taille du resultSet) ==< à ce moment-là tu pourras déclarer directement un tableau et dans la boucle while(rs.next()) initialiser ce tableau à la place d'une liste.

A la place de d*** mettre developpez dans le lien ci-dessus. C'est peut-être pour cela qu'il ne passe pas (on fait mention d'un site concurrent) ?
0
Marco la baraque Messages postés 996 Date d'inscription   Statut Contributeur Dernière intervention   329
 
Bonsoir,
Comme le dit Sandul, il est plus que conseillé d'utiliser des Collections pour stocker toutes tes données.
Utiliser un tableau c'est super pourri (déjà à cause des problèmes que tu rencontres).
Passer des objets dans tes requests c'est l'intérêt principal des servlets/jsp, il faut en abuser justement.

Cordialement,
0
titfofol Messages postés 172 Date d'inscription   Statut Membre Dernière intervention   9
 
oui, oui, je l'ai bien lu ce poste dans ma boite de réception...

bon bon, admettons que je fasse comme tu l'as dit avec une liste mais de là, est-ce que je pourrais décomposer ma liste afin que pour l'affichage il y aurait le nom du champ ainsi que sa donné?!

ex:

nopdt libpdt
154688 doliprane

titfofol
0
titfofol Messages postés 172 Date d'inscription   Statut Membre Dernière intervention   9
 
Non mais moi je parlais de tableau parce que je ne sais pas utiliser les listes c'est pour ça, et comme je sais me servir de tableau c'est pour ça que je pensais que c'était une meilleure solution... Mais bon apparement ce n'ai pas le cas... bha je compte sur vous pour m'aider à coder avec les listes ... :D

Titfofol
0
Marco la baraque Messages postés 996 Date d'inscription   Statut Contributeur Dernière intervention   329
 
Bonsoir,
Tout d'abord, l'intérêt de la programmation objet (dont java fait partie), c'est justement de programmer avec... des objets.
Autrement dit, tu crées une classe qui mappe ta table.
Exemple : tu as une table 'personne' composée des champs 'id', 'nom', 'prénom', 'datedenaissance'
Tu vas créer une classe :
class Personne {
 Long id;
 String nom;
 String prenom;
 Date dateDeNaissance;

 public Personne() {}

 //ici tu mets tous les getters et setters
}


Ensuite tu créeras une liste de la manière suivante :
List<Personne> list = new LinkedList<Personne>();
list.add(personne1);
list.add(personne2);

où personne1 et personne2 seront des instances de Personne.

Edit: Je te conseille de lire un tutoriel sur la JPA pour savoir comment mapper facilement des tables dans des objets java.


Cordialement,
0
sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723 > Marco la baraque Messages postés 996 Date d'inscription   Statut Contributeur Dernière intervention  
 
salut Marco,

hi, hi, tu as été plus rapide :-)
0
sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
déclaration:
List<String> maList = new ArrayList<String>();
ajout d'éléments:
maList.add("un string");
récupération de l'élément en position 32:
String elem32 = maList.get(32);
Et, bien entendu, tu peux avoir tes propres objets à la place du String dans l'exemple ci-dessus.

nopdt libpdt
154688 doliprane
==> tu as besoin d'un bean avec deux champs, les deux de type String
public class MonObjet {
  private String champ1;
  private String champ2;

// des méthodes get() et set() ici pour les 2 champs

// un constructeur:
public MonObjet(String s1, String s2) {
  champ1 = s1;
  champ2 = s2;
}
}

==> tu auras dans la boucle while des choses comme
maListe.add(new MonObject(rs.getString("coonne1"), rs.getString("colonne2));
voilou.. Loin d'être suffisant comme tuto, mais sur developpez tu pourras trouver des tutos plus complets.
0