Vue en java

Fermé
hadjila20 Messages postés 52 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 5 novembre 2012 - 11 mai 2010 à 23:17
BadGuitarist Messages postés 367 Date d'inscription dimanche 12 octobre 2008 Statut Membre Dernière intervention 20 octobre 2013 - 13 mai 2010 à 00:31
bsr tout le monde voilà j'essaye de faire une servlet qui me permettra de me connecter à une base de données sous mysql, et donc j'utilise une requête sql (une vue) pour récupérer mes données, voici le code:
Code Java :

package com.servlet.projet;

import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Premiere_vue extends HttpServlet
{
private Connection con;
private PrintWriter out;
public void init(ServletConfig conf) throws ServletException
{
super.init(conf);
try
{
//charger le pilôte
Class.forName("com.mysql.jdbc.Driver");
//Etablir une connexion
con =DriverManager.getConnection ("jdbc:mysql://localhost:3306/cc", "root", "mysql");
}
catch(Exception e)
{
System.out.println(e);
}
}
public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
{
res.setContentType("text/html");
try
{
out = res.getWriter();
out.println("<html><head><title>");
out.println("JDBC Servlet");
out.println("</title></head><body>");
//création de l'instruction avec un objet statement pour envoyer des commandes à la base
Statement stmt = con.createStatement();
//Executer la requete
ResultSet rs = stmt.executeQuery("CREATE VIEW view AS select commande.ID_mag,commande.ID_art,facture.Qte_fact,article.Prix_G,article.Taxe FROM article,commande,facture " +
"WHERE (commande.ID_art=article.ID_art) and (commande.ID_CMD=facture.ID_CMD) ");
out.println("<TR>");
out.println("<TD>Id_Mag</TD>") ;
out.println("<TD>Id_art </TD>");
out.println("<TD>Qte_fact</TD>");
out.println("<TD>Prix_G</TD>");
out.println("<TD>Taxe </TD>");
out.println("</TR>");
out.println("<TD>");out.println("</TD>");

while (rs.next())
{

out.println("<TR>");

out.println(rs.getString("ID_mag"));

out.println("<TD>");
out.println(rs.getString("ID_art"));
out.println("</TD>");
out.println("<TD>");
out.println(rs.getString("Qte_fact"));
out.println("</TD>");
out.println("<TD>");
out.println(rs.getString("Prix_G"));
out.println("</TD>");
out.println("<TD>");
out.println(rs.getString("Taxe"));
out.println("</TD>");

out.println("</TR>");
}
out.println("</table>");
out.println("</body>");
out.println("</html>");

rs.close();
stmt.close();
}
catch(SQLException e)
{
out.println("Exception SQL");
}
catch(IOException e)
{
}
out.println("</body></html>");
out.close();
}
public void destroy()
{
try
{
con.close();
}
catch(SQLException e)
{
;
}
}
}



et donc je n'arrive pas à afficher mes résultats ,y a un message d'erreur qui est : Exception SQL
quelqu'un pourrait il m'aider pour faire cette vue(c'est une vue local juste sur un seul site et une seule base de données).
merci
A voir également:

1 réponse

Salut,

Comme je connais rien à Java, je vais essayer de m'en tenir au SQL.

1) l'instruction que tu cherches à exécuter est une création de vue. Elle ne te renverra pas de données et donc ton ResultSet ne peut être que vide.
si tu veux récupérer des données, il faudra créer la vue en dehors de l'application et utiliser dans ton applet un ResultSet rs = stmt.executeQuery("select * from view where tes_critères");

2) je ne suis pas sûr que tu aies le droit d'appeler une vue VIEW. J'aurais tendance à dire que c'est un mot réservé donc inutilisable pour désigner un objet de DB. Fais le test depuis une console. N'hésite pas à changer le nom de la vue en - par exemple - InvoicedItrems

Voilà ! je te laisse tester tout ça.


[EDIT: 3 retouches mineures]
0
BadGuitarist Messages postés 367 Date d'inscription dimanche 12 octobre 2008 Statut Membre Dernière intervention 20 octobre 2013 27
13 mai 2010 à 00:22
Bonsoir Hadjila20 et Fiu,

1- Je confirme les propos de Fiu : si tu veux utiliser une vue pour faire ta sélection d'infos, il faut que tu crées cette vue directement dans ta base de données et que tu fasses un ordre SELECT dans ta servlet en utilisant la méthode executeQuery.

2- Pourquoi appeler des "objets" personnels avec le même nom que des commandes du langage que vous manipulez : il y a de fortes chances pour qu'un jour vous passiez des heures à déboguer alors que c'était évitable.

Bon courage.
0
BadGuitarist Messages postés 367 Date d'inscription dimanche 12 octobre 2008 Statut Membre Dernière intervention 20 octobre 2013 27
13 mai 2010 à 00:31
Je rajoute un petit point que je viens de constater :

Hadjila20, tu utilises les méthodes getString() pour récupérer les données :
* Qte_fact
* Prix_G
* Taxe
or je crains que ces données soient de type numérique, donc il faut utiliser getFloat() pour les récupérer de la BD.
Si tu veux garder getString(); il faut alors que tu convertisses dans ton SELECT ces colonnes en chaîne de caractères (TO_CHAR()).
0