Bonjour,
J'ai un petit soucis en Java.
J'écris une classe qui permet de se connecter à une BD en SQL Server.
Alors l'obtention des drivers se fait sans soucis. La connexion aussi, le login est correct, tout se passe normalement.
Mais lorsque j'exécute une requête, ça me renvoie une exception.
Voici le bout de code :
ResultSet res = c1.executerRequete("SELECT * FROM Client");
try {
while (res.next()){
System.out.println("OK => " + res.getString("Nom") + "\n");
}
}
J'affiche alors l'exception avec ex.getMessage().toString()
Ca m'affiche "Le jeu de résultats est fermé".
Pourtant res est non nul (je l'ai testé).
D'où vient cette erreur ? Car lorsque j'essaie d'afficher les tables de la base de données avec la fonction getTables, les tables s'affichent toutes.
Merci de votre aide.
Problème résolu, j'ai été idiot d'oublier que dans ma procédure executerRequete, j'avais fermé la connexion.
C'est ça quand on utilise du code fait en cours il y a quelques temps, sans tout relire. ![]()
Bonjour j'aurais une autre question, et je uppe ce topic pour ne pas avoir à en créer un autre.
J'ai une servlet Java qui fait un forward, et qui me redirige vers un formulaire JSP.
rd = request.getRequestDispatcher("formuClient.jsp");
rd.forward(request, response);
Mais d'après ce que j'ai compris, le forward se fait du côté du serveur, et de manière transparente pour l'utilisateur, donc l'URL ne change pas lorsque j'arrive sur formuClient.jsp.
Comment faire pour que l'URL change ? Merci. ![]()
La question à te poser c'est :
Est ce que des données sont retournée ?
Si oui quoi ?
Si la réponse est non à la 1ère.
Tu peux faire un
response.sendRedirect("formuClient.jsp")
Ca appelle ta page mais en GET !
Le requestDispatcher lui appelle la page en POST.
Donc si tu as des infos à passer à ta jsp, il faut que tu les passes en paramètres d'url.
Merci pour ta réponse, je ne connaissais pas sendRedirect.
Et bien je n'ai pas de données à retourner. Enfin une fois que formuClient.jsp est correctement rempli, les données du formulaire sont juste insérées dans la base de données, et normalement, je n'ai pas de paramètres à passer.
Je vais tester demain au stage le sendRedirect. Merci. ![]()
Je viens de tester et ça fonctionne. Merci !
Par contre, il s'avère que j'avais besoin de paramètres, car les précédents ne sont pas mémorisés.
Comment faire pour que le SendRedirect cache les paramètres ?
Je pense que ce soit possible.
Comme je disais, c'est appelé en GET et je pense pas que les arguments puissent être caché.
Une solution serait de les foutre en session et de les virer après.
mais au final, c'est bien crado.
A part ça :
- En quoi ca te dérange que l'adresse soit pas en *.jsp ?
- Tu es en stage de quel niveau
- Je t'encourage vivement à utiliser un framework, Struts+taglibs par exemple pour ta couche présentation. Et Spring +hibernate pour ta couche métiers/accés données.
Moi aussi en stage, j'ai fait des trucs de ce genre. J'étais seul sur un projet JEE, je me suis pas trop imposé de régles. Avec le recul, je m'en veux, car je trouve ce que j'ai fait moche, un peu une déception pour moi. Et de plus, c'est des frameworks utile à connaitre si jamais tu poursuis professionnellement dans le JEE.
En cas de question, sur tout ça, hésite pas à continuer sur ce topic.
Merci pour tes conseils ,je vais me lancer dans les framework alors, ça fait toujours quelque chose de + à rajouter sur mon CV.
Pour mon niveau, disons que j'ai commencé le JSP cette année, mais je fais du Java depuis 2-3 ans.
Pour les paramètres, à la base ça me dérange pas qu'ils soient dans l'URL. Seulement lorsque par exemple l'utilisateur actualise la page, la page va se rafraichir selon l'URL et les paramètres.
Je ne pense pas que ça soit dérangeant, mais c'est juste que j'aurais aimé avoir des pages avec des URL sans paramètres, et seulement les pages en cours.
Pour les framework, est-ce que ça m'impose de recommencer tout mon projet ?
Ca dépend ce que tu as fait pour me moment et de la façon dont tu as organisé le tout.
Pour utilisation de Struts, pas trop je pense.
Par contre Spring+hibernate, oui énormément, mais c'est plus de la réorganisation tout recommencer. Sur ce court terme, ca vaut pas le coup mais si le projet commence à prendre de l'importance l'absence de framework risque de faire devenir le tout un joyeux bordel, surtout si des gens reprennent le code après toi.
Hibernate est ce que appelle un ORM (Object-Relational Mapping). Il te permet donc de faire le mapping entre une couche objet et la base de données.
Spring lui est un conteneur léger, pas évident ce que c'est mais vachement intéressant à utiliser.
Même si tu ne t'en sers pas, renseigne toi un peu dessus. Comme ça la prochaine fois, tu y penseras et tu saura comment faire.
Ton stage, c'est un stage Bac+combien ? Durée ? Commencé depuis combien de temps ?
C'est un stage bac +4, durée 3 mois, et commencé depuis le 2 mai .
Merci pour les renseignements. J'ai de toute façon une autre appli à faire après celle-ci, et je pense la faire en Java aussi, donc je penserai à utiliser ces frameworks.
J'aurais une question, et je parcours les forums à la recherche d'une soluce.
Je cherche désespérément un moyen d'inclure du code Java dans un formulaire. Je m'explique :
j'ai un champ Code postal et un champ ville.
Je voudrais que dans le Code postal, quand l'utilisateur commence par taper "7" par exemple, cela affiche automatiquement en pré-saisies toutes les villes dont le code postal commencerait par 7.
C'est exactement le même principe que dans le formulaire d'inscription de jeuxvideo.com.
J'ai trouvé sur le net un script d'insertion SQL de toutes les communes. Je peux donc créer une table sous SQL Server avec toutes les communes de France, mais comment faire en sorte que dans le formulaire.jsp, les villes apparaissent en présaisie ?
Merci. ![]()
Ok, si tu bac+4, tu peux te permettre un peu de laisser aller. Surtout si tu as une appli à faire dans quelques temps, ça te permettra de faire une confrontation des 2 dans ton rapport de stage.
Pour ta question sur les codes postaux, regarde du coté de ajax.
http://siddh.developpez.com/articles/ajax/
L'idée serait d'envoyer la saisie à une servlet effectue la requête permettant de liste des villes et la renvoi, et ça bien sur de manière asynchrone.
Après t'es pas obligé de commencer au 1er caractère, sinon :
- Ça bouffe de la bande passante
- Ça fait de grosse requête.
En effet, si tu prends même que sur 2, ça fait quand même toutes les villes d'un département.
Prends donc plutôt à partir de la 3ème.
Ok merci. J'ai trouvé cela en Ajax :
http://dcabasson.developpez.com/articles/javascript/ajax/ajax-autocompletion-pas-a-pas/#L1-A
Mais le fait qu'il y ait du code Php ne m'arrange pas.
Est-ce tu penses que ce code Php peut être traduit en Java, ou je dois chercher un autre exemple ?
Oui, c'est faisable.
Par contre, c'est pas vraiment de la traduction.
Faut reprendre l'idée et adapter ça en java.
J'essaie désespérément depuis ce matin.
Finalement, je bloque sans doute à cause de la fonction open en Ajax.
Voilà le code :
var _adresseRecherche = "Villes2"
function callSuggestions(valeur){
if(_xmlHttp&&_xmlHttp.readyState!=0){
_xmlHttp.abort()
}
_xmlHttp=getXMLHTTP();
if(_xmlHttp){
//appel � l'url distante
_xmlHttp.open("GET", _adresseRecherche, true);
_xmlHttp.onreadystatechange=function() {
if(_xmlHttp.readyState==4&&_xmlHttp.responseXML) {
var liste = traiteXmlSuggestions(_xmlHttp.responseXML)
cacheResults(valeur,liste)
metsEnPlace(valeur,liste)
}
};
// envoi de la requete
_xmlHttp.send(null)
}
}
Villes2 est ma servlet, en Java, qui affiche un xml.
Or, lorsque je remplace _adresseRecherche par un vrai fichier test.xml, tout fonctionne. Mais la fonction open ne semble pas réussir à lancer Villes2.
A quoi serait-ce du ? ![]()
Chaud, chaud, chaud.
Dans ma servlet, j'ai mis :
response.setContentType("text/xml");
Et c'est bon. J'ai totalement été idiot d'oublier ça.
Merci en tout cas pour ton aide, Novembre. ![]()
Ok, utile à savoir pour le contextType. ![]()
et de rien, si tu as d'autres question, n'hésite pas.