XmlUtils class
Fermé
leilusha
Messages postés
19
Date d'inscription
mercredi 4 juin 2014
Statut
Membre
Dernière intervention
22 février 2017
-
7 nov. 2015 à 11:14
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 7 nov. 2015 à 13:14
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 7 nov. 2015 à 13:14
1 réponse
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
7 nov. 2015 à 13:14
7 nov. 2015 à 13:14
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; } } }