XmlUtils class
leilusha
Messages postés
19
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Salut,
je crée une webMethod qui doit retourné une table de ma base de données, j'utilise la class XmlUtils pour cela, mais quand je test mon webService je reçoit des erreurs, je suis totalement novice en webServices et je ne sais ou esl le problème voilà mon code :
quelqu'un pouvez m'aider svp ? Merci
je crée une webMethod qui doit retourné une table de ma base de données, j'utilise la class XmlUtils pour cela, mais quand je test mon webService je reçoit des erreurs, je suis totalement novice en webServices et je ne sais ou esl le problème voilà mon code :
@WebMethod(operationName = "affT") public String affT(@WebParam(name = "nmT") String nmT) throws IOException { String html=null; try { Class.forName( "com.mysql.jdbc.Driver" ); conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/TP1","root",""); pst=conn.createStatement(); rs=pst.executeQuery("select * from '"+nmT+"'"); html = net.proteanit.sql.XmlUtils.resultSetToHtml(rs); } catch(Exception e) { System.out.println(" Echec !"); e.printStackTrace(); } return html; } }
quelqu'un pouvez m'aider svp ? Merci
1 réponse
Bonjour,
Le code c'est bien, mais les erreurs que tu as c'est mieux.
La seule erreur "bloquante" que je vois c'est
De plus, tu as l'air de dire que c'est un problème de web service, mais ce code est relativement indépendant, c'est à dire que si tu l'utilises ailleurs que dans un web service il devrait se comporter de la même manière (donc planter même s'il n'est pas utilisé dans un web service).
J'ai également l'impression que tu réutilises sans arrêt les mêmes objets pour ta base de donnée (conn, pst, rs...) ce qui peut avoir des effets de bords.
Je t'invites à séparer ton code (Dao et Servvice dans des classes distinctes), pour ne pas tout mélanger, et à fermer tes Connection et Statement quand tu ne t'en sers plus, par exemple avec un try-with-resources.
Exemple (je n'ai pas testé) :
Le code c'est bien, mais les erreurs que tu as c'est mieux.
La seule erreur "bloquante" que je vois c'est
"select * from '"+nmT+"'", pourquoi est-ce que tu mets des apostrophes autour du nom de la table ?
De plus, tu as l'air de dire que c'est un problème de web service, mais ce code est relativement indépendant, c'est à dire que si tu l'utilises ailleurs que dans un web service il devrait se comporter de la même manière (donc planter même s'il n'est pas utilisé dans un web service).
J'ai également l'impression que tu réutilises sans arrêt les mêmes objets pour ta base de donnée (conn, pst, rs...) ce qui peut avoir des effets de bords.
Je t'invites à séparer ton code (Dao et Servvice dans des classes distinctes), pour ne pas tout mélanger, et à fermer tes Connection et Statement quand tu ne t'en sers plus, par exemple avec un try-with-resources.
Exemple (je n'ai pas testé) :
public class Service { @WebMethod(operationName = "affT") public String affT(@WebParam(name = "nmT") String nmT) throws IOException { return MysqlDao.getAllTable(nmT); } } public class MysqlDao { static { // ne doit être appelé qu'une seule fois dans tout le programme Class.forName("com.mysql.jdbc.Driver"); } private static Connection getConnection() { return DriverManager.getConnection("jdbc:mysql://localhost:3306/TP1","root",""); } public static String getAllTable(String table) { try ( // try-with-resources Connection conn = getConnection(); Statement stmt = conn.createStatement(); ) { String query = "select * from "+nmT; ResultSet rs = stmt.executeQuery(query); return XmlUtils.resultSetToHtml(rs); } catch(Exception e) { e.printStackTrace(); return null; } } }