Vue en java
hadjila20
Messages postés
52
Date d'inscription
Statut
Membre
Dernière intervention
-
BadGuitarist Messages postés 367 Date d'inscription Statut Membre Dernière intervention -
BadGuitarist Messages postés 367 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Vue en java
- Vue satellite en direct gratuit de ma maison - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
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]
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]
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.
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()).