Requete SQl et JAVA
Résolu/Fermé
xyeuh
Messages postés
54
Date d'inscription
dimanche 4 novembre 2012
Statut
Membre
Dernière intervention
7 juillet 2013
-
4 nov. 2012 à 16:28
xyeuh Messages postés 54 Date d'inscription dimanche 4 novembre 2012 Statut Membre Dernière intervention 7 juillet 2013 - 4 nov. 2012 à 19:44
xyeuh Messages postés 54 Date d'inscription dimanche 4 novembre 2012 Statut Membre Dernière intervention 7 juillet 2013 - 4 nov. 2012 à 19:44
A voir également:
- Requete SQl et JAVA
- Waptrick java football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- A java exception has occurred ✓ - Forum Minecraft
- Waptrick java ✓ - Forum Mobile
- Bible java - Forum Téléchargement
3 réponses
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 014
4 nov. 2012 à 17:28
4 nov. 2012 à 17:28
Avec une <table> par exemple. Je n'ai pas vérifié mais voici ce que ça pourrait donner :
public String toHtml(ResultSet result) throws SQLException { StringBuilder sb = new StringBuilder("<table>"); ResultSetMetaData data = result.getMetaData(); int n = data.getColumnCount(); sb.append("<tr>\n"); for (int i=0; i<n; i++) sb.append("\t<th>").append(data.getColumnName(i)).append("</th>\n>"); sb.append("</tr>\n"); while (result.next()) { sb.append("<tr>\n"); for (int i=0; i<n; i++) sb.append("<td>").append(result.getObject(i)).append("</td>\n"); sb.append("</tr>\n"); } return sb.append("</table>\n").toString(); }
xyeuh
Messages postés
54
Date d'inscription
dimanche 4 novembre 2012
Statut
Membre
Dernière intervention
7 juillet 2013
4 nov. 2012 à 18:01
4 nov. 2012 à 18:01
Merci pour votre réponse
cependant je ne comprend pas complétement votre code,
il faut savoir que je souhaite renvoyer le résultat d'une requete SQL faite en java dans la page HTML.
cependant je ne comprend pas complétement votre code,
il faut savoir que je souhaite renvoyer le résultat d'une requete SQL faite en java dans la page HTML.
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 014
4 nov. 2012 à 18:07
4 nov. 2012 à 18:07
Le résultat d'une requête SQL c'est un ResultSet, c'est à dire un tableau avec des colonnes fixées et autant de lignes que de résultats. La méthode la plus simple d'afficher un tableau en HTML c'est les <table>. Ici mon code convertit un ResultSet en un String qui correspond au code HTML de présentation des résultats obtenus. Tu n'as plus qu'à mettre ce code généré dans ta page HTML à l'endroit où tu veux.
xyeuh
Messages postés
54
Date d'inscription
dimanche 4 novembre 2012
Statut
Membre
Dernière intervention
7 juillet 2013
Modifié par xyeuh le 4/11/2012 à 18:47
Modifié par xyeuh le 4/11/2012 à 18:47
Encore Merci pour votre réponse,
J'ai donc essayer ce que vous m'avait dit, mais j'obtiens toujours une erreur
que je ne comprend pas je vous poste donc mon code:
CODE Generation_Html.java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.File;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
public class Generation_Html
{
public static void run()
{
Connection con = null;
Statement st = null;
ResultSet rs = null;
//connexion à la base de donnée
String url = "jdbc:mysql://localhost:3306/METEO";
String user = "root";
String password = "pass";
//requete SQL
String sql = "SELECT * FROM TEMPERATURE ";
try {
con = DriverManager.getConnection(url, user, password);
st = con.createStatement();
rs = st.executeQuery(sql);
/***********************************/
/**************************************/
}
catch (SQLException ex) {
System.out.println("PB");
ex.printStackTrace();// traitement
} finally { // fermeture de la connexion
}
}
public String toHtml(ResultSet rs) throws SQLException
{
StringBuilder sb = new StringBuilder("<table>");
ResultSetMetaData data = rs.getMetaData();
int n = data.getColumnCount();
sb.append("<tr>\n");
for (int i=0; i<n; i++)
sb.append("\t<th>").append(data.getColumnName(i)).append("</th>\n>");
sb.append("</tr>\n");
while (rs.next())
{
sb.append("<tr>\n");
for (int i=0; i<n; i++)
sb.append("<td>").append(rs.getObject(i)).append("</td>\n");
sb.append("</tr>\n");
}
return sb.append("</table>\n").toString();
try
{
File monFichier = new File("/home/arnaud/workspace/blabla/bin/Meteo.html");
System.out.println("/home/arnaud/workspace/ProjetServeur/bin/Meteo.html existe ? "+(monFichier.exists()?"OUI":"NON"));
//ecriture dans un le fichier Meteo.html du résultat de la requete SQL.
BufferedWriter ecrivain = new BufferedWriter(new FileWriter(monFichier, false));
PrintWriter ecr = new PrintWriter(new BufferedWriter(new FileWriter(monFichier, false)));
/*ecrivain.write("<html><head><title>Web Server in JAVA</title></head><body><center><h1>Meteo</h1></center><a href=index.html>Home</a><br><br><?php while($donnees = mysql_fetch_array(rs)){?><table border='1'align='center'><tr><td id='case' size='500'>Ville</td><td><?php echo $donnees['Ville'];?></td></tr><tr><td id='case' size='100'>Temperature</td><td><?php echo $donnees['Temperature'];?></td></tr></table></body></html>");*/
/*int f = 2;*/
ecr.println(sb);
ecrivain.write(sb);
ecrivain.flush();
ecrivain.close();
BufferedReader lecteur=new BufferedReader(new FileReader(monFichier));
String content = lecteur.readLine();
while(content != null)
{
System.out.println(content);
content = lecteur.readLine();
}
lecteur.close();
}
catch(java.io.IOException ioe)
{
System.out.println(ioe);
}
}
}
CODE Run_Html.java
// Permet le lancement de la génération du fichier Meteo.html
public class Run_Html
{
public static void main(String[] args)
{
Generation_Html.run();
}
}
l'erreur étant que au niveau du ecrivain.write(sb); éclipse me dit qu'il attend un entier et non un String. (dans Generation_Html.java).
Cordialement Xyeuh
J'ai donc essayer ce que vous m'avait dit, mais j'obtiens toujours une erreur
que je ne comprend pas je vous poste donc mon code:
CODE Generation_Html.java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.File;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
public class Generation_Html
{
public static void run()
{
Connection con = null;
Statement st = null;
ResultSet rs = null;
//connexion à la base de donnée
String url = "jdbc:mysql://localhost:3306/METEO";
String user = "root";
String password = "pass";
//requete SQL
String sql = "SELECT * FROM TEMPERATURE ";
try {
con = DriverManager.getConnection(url, user, password);
st = con.createStatement();
rs = st.executeQuery(sql);
/***********************************/
/**************************************/
}
catch (SQLException ex) {
System.out.println("PB");
ex.printStackTrace();// traitement
} finally { // fermeture de la connexion
}
}
public String toHtml(ResultSet rs) throws SQLException
{
StringBuilder sb = new StringBuilder("<table>");
ResultSetMetaData data = rs.getMetaData();
int n = data.getColumnCount();
sb.append("<tr>\n");
for (int i=0; i<n; i++)
sb.append("\t<th>").append(data.getColumnName(i)).append("</th>\n>");
sb.append("</tr>\n");
while (rs.next())
{
sb.append("<tr>\n");
for (int i=0; i<n; i++)
sb.append("<td>").append(rs.getObject(i)).append("</td>\n");
sb.append("</tr>\n");
}
return sb.append("</table>\n").toString();
try
{
File monFichier = new File("/home/arnaud/workspace/blabla/bin/Meteo.html");
System.out.println("/home/arnaud/workspace/ProjetServeur/bin/Meteo.html existe ? "+(monFichier.exists()?"OUI":"NON"));
//ecriture dans un le fichier Meteo.html du résultat de la requete SQL.
BufferedWriter ecrivain = new BufferedWriter(new FileWriter(monFichier, false));
PrintWriter ecr = new PrintWriter(new BufferedWriter(new FileWriter(monFichier, false)));
/*ecrivain.write("<html><head><title>Web Server in JAVA</title></head><body><center><h1>Meteo</h1></center><a href=index.html>Home</a><br><br><?php while($donnees = mysql_fetch_array(rs)){?><table border='1'align='center'><tr><td id='case' size='500'>Ville</td><td><?php echo $donnees['Ville'];?></td></tr><tr><td id='case' size='100'>Temperature</td><td><?php echo $donnees['Temperature'];?></td></tr></table></body></html>");*/
/*int f = 2;*/
ecr.println(sb);
ecrivain.write(sb);
ecrivain.flush();
ecrivain.close();
BufferedReader lecteur=new BufferedReader(new FileReader(monFichier));
String content = lecteur.readLine();
while(content != null)
{
System.out.println(content);
content = lecteur.readLine();
}
lecteur.close();
}
catch(java.io.IOException ioe)
{
System.out.println(ioe);
}
}
}
CODE Run_Html.java
// Permet le lancement de la génération du fichier Meteo.html
public class Run_Html
{
public static void main(String[] args)
{
Generation_Html.run();
}
}
l'erreur étant que au niveau du ecrivain.write(sb); éclipse me dit qu'il attend un entier et non un String. (dans Generation_Html.java).
Cordialement Xyeuh
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 014
4 nov. 2012 à 19:15
4 nov. 2012 à 19:15
C'est parce que tu utilises mon code n'importe comment !
Là il faudrait carrément revoir les bases de comment on utilise une méthode...
Je t'ai donné une méthode indépendante, son code ne doit pas être copier/coller en plein milieu du code d'une autre méthode ! Elle doit être appelée au moment opportun en lui passant des paramètres...
Là il faudrait carrément revoir les bases de comment on utilise une méthode...
Je t'ai donné une méthode indépendante, son code ne doit pas être copier/coller en plein milieu du code d'une autre méthode ! Elle doit être appelée au moment opportun en lui passant des paramètres...
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.File; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; class Generation_Html { public static String toHtml(ResultSet rs) throws SQLException { StringBuilder sb = new StringBuilder("<table>"); ResultSetMetaData data = rs.getMetaData(); int n = data.getColumnCount(); sb.append("<tr>\n"); for (int i=0; i<n; i++) sb.append("\t<th>").append(data.getColumnName(i)).append("</th>\n>"); sb.append("</tr>\n"); while (rs.next()) { sb.append("<tr>\n"); for (int i=0; i<n; i++) sb.append("<td>").append(rs.getObject(i)).append("</td>\n"); sb.append("</tr>\n"); } return sb.append("</table>\n").toString(); } public static void run() { Connection con = null; Statement st = null; ResultSet rs = null; //connexion à la base de donnée String url = "jdbc:mysql://localhost:3306/METEO"; String user = "root"; String password = "pass"; //requete SQL String sql = "SELECT * FROM TEMPERATURE "; try { con = DriverManager.getConnection(url, user, password); st = con.createStatement(); rs = st.executeQuery(sql); } catch (SQLException ex) { System.out.println("PB"); ex.printStackTrace();// traitement } try { File monFichier = new File("/home/arnaud/workspace/blabla/bin/Meteo.html"); System.out.println("/home/arnaud/workspace/ProjetServeur/bin/Meteo.html existe ? "+(monFichier.exists()?"OUI":"NON")); //ecriture dans un le fichier Meteo.html du résultat de la requete SQL. BufferedWriter ecrivain = new BufferedWriter(new FileWriter(monFichier, false)); PrintWriter ecr = new PrintWriter(new BufferedWriter(new FileWriter(monFichier, false))); /*ecrivain.write("<html><head><title>Web Server in JAVA</title></head><body><center><h1>Meteo</h1></center><a href=index.html>Home</a><br><br><?php while($donnees = mysql_fetch_array(rs)){?><table border='1'align='center'><tr><td id='case' size='500'>Ville</td><td><?php echo $donnees['Ville'];?></td></tr><tr><td id='case' size='100'>Temperature</td><td><?php echo $donnees['Temperature'];?></td></tr></table></body></html>");*/ /*int f = 2;*/ String str = toHtml(rs); ecr.println(str); ecrivain.write(str); ecrivain.flush(); ecrivain.close(); BufferedReader lecteur=new BufferedReader(new FileReader(monFichier)); String content = lecteur.readLine(); while(content != null) { System.out.println(content); content = lecteur.readLine(); } lecteur.close(); ecr.close(); } catch(java.io.IOException ioe) { System.out.println(ioe); } catch (SQLException e) { e.printStackTrace(); } } } // Permet le lancement de la génération du fichier Meteo.html public class Run_Html { public static void main(String[] args) { Generation_Html.run(); } }
xyeuh
Messages postés
54
Date d'inscription
dimanche 4 novembre 2012
Statut
Membre
Dernière intervention
7 juillet 2013
4 nov. 2012 à 19:28
4 nov. 2012 à 19:28
Encore merci pour votre réponse et temps consacré a mon problème.
Mais lorsque je compile votre code j'obtiens l'erreur suivante:
/home/arnaud/workspace/ProjetServeur/bin/Meteo.html existe ? OUI
java.sql.SQLException: Column index out of range.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
at com.mysql.jdbc.ResultSetMetaData.getField(ResultSetMetaData.java:405)
at com.mysql.jdbc.ResultSetMetaData.getColumnName(ResultSetMetaData.java:256)
at Generation_Html.toHtml(Generation_Html.java:25)
at Generation_Html.run(Generation_Html.java:78)
at Run_Html.main(Run_Html.java:7)
Cordialement Xyeuh.
Mais lorsque je compile votre code j'obtiens l'erreur suivante:
/home/arnaud/workspace/ProjetServeur/bin/Meteo.html existe ? OUI
java.sql.SQLException: Column index out of range.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
at com.mysql.jdbc.ResultSetMetaData.getField(ResultSetMetaData.java:405)
at com.mysql.jdbc.ResultSetMetaData.getColumnName(ResultSetMetaData.java:256)
at Generation_Html.toHtml(Generation_Html.java:25)
at Generation_Html.run(Generation_Html.java:78)
at Run_Html.main(Run_Html.java:7)
Cordialement Xyeuh.
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 014
4 nov. 2012 à 19:36
4 nov. 2012 à 19:36
Effectivement il y a une erreur, les colonnes sur les ResultSet et ResultSetMetaData sont numérotées à partir de 1, alors que dans mon code j'ai commencé les indices à 0, il faut donc tout décaler :
for (int i=1; i<=n; i++)
xyeuh
Messages postés
54
Date d'inscription
dimanche 4 novembre 2012
Statut
Membre
Dernière intervention
7 juillet 2013
4 nov. 2012 à 19:44
4 nov. 2012 à 19:44
Encore merci pour le temps que vous avez consacré sur mon problème.
Merci pour toutes vos réponses et votre aide qui ma était très précieuse, étant donnée que je débute dans le java.
Votre solution fonctionne parfaitement.
Cordialement xyeuh.
Merci pour toutes vos réponses et votre aide qui ma était très précieuse, étant donnée que je débute dans le java.
Votre solution fonctionne parfaitement.
Cordialement xyeuh.