Problème connexion avec la Base de Donnés (Servlet)
tounsii007
Messages postés
14
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 -
Bonsoir tous le monde,
j'ai essayé de faire une connexion avec une Base de données MICROSOFT ACCESS dans ma Servlet ... mais ça marche pas malheureusement
c'est quoi le Problème d'après vous ? :)
merci d'avance
j'ai essayé de faire une connexion avec une Base de données MICROSOFT ACCESS dans ma Servlet ... mais ça marche pas malheureusement
import java.io.IOException; import java.io.PrintWriter; import java.sql.*; import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * * @author Ridha */ @WebServlet(urlPatterns = {"/NewServlet"}) public class NewServlet extends HttpServlet { /** * Processes requests for both HTTP GET and POST * methods. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs * @throws java.sql.SQLException * @throws java.lang.ClassNotFoundException */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException, ClassNotFoundException { response.setContentType("text/html;charset=UTF-8"); try ( PrintWriter out = response.getWriter()) { /* TODO output your page here. You may use following sample code. */ out.println("<!DOCTYPE html>"); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet NewServlet</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1> lecture de données de la Base de données <h1>"); String driver ="sun.jdbc.odbc.JdbcOdbcDriver"; Class.forName(driver); // l'éxecution du programme se bloque ici Connection conn = DriverManager.getConnection("jdbc:odbc:DB"); Statement statement = conn.createStatement(); String sql="Select * from Kunden" ; ResultSet rs = statement.executeQuery(sql); while (rs.next()) out.println("lu"); out.println("<h5> ID= "+rs.getString(1)+ "name "+rs.getString(2)+"</h5>"); out.println("</body>"); out.println("</html>"); }catch (SQLException sqq){sqq.getMessage();} }
c'est quoi le Problème d'après vous ? :)
merci d'avance
A voir également:
- Problème connexion avec la Base de Donnés (Servlet)
- Gmail connexion - Guide
- Base de registre - Guide
- Site inaccessible n'autorise pas la connexion - Guide
- Connexion chromecast - Guide
- Gmail connexion autre compte - Guide
1 réponse
Bonjour,
D'une part le Class.forName ne devrait être fait qu'une seule fois dans tout le programme, par exemple dans la méthode init() de la servlet.
Il en va de même pour la connexion, ça ne sert à rien de créer une nouvelle connexion à la base de données à chaque requête, une connexion pour la servlet entière suffit.
D'autre part si ça a planté tu dois avoir le message d'erreur dans les logs du serveur, à moins que tu ne l'ai intercepté lors de l'appel à processRequest.
La raison étant sûrement que le jar du driver n'a pas été ajouté dans le classpath donc il ne peut pas charger la classe.
Remarque :
Tu peux également ne pas faire de try/catch ici vu que tu throws déjà les SQLException au niveau de ta méthode.
D'une part le Class.forName ne devrait être fait qu'une seule fois dans tout le programme, par exemple dans la méthode init() de la servlet.
Il en va de même pour la connexion, ça ne sert à rien de créer une nouvelle connexion à la base de données à chaque requête, une connexion pour la servlet entière suffit.
D'autre part si ça a planté tu dois avoir le message d'erreur dans les logs du serveur, à moins que tu ne l'ai intercepté lors de l'appel à processRequest.
La raison étant sûrement que le jar du driver n'a pas été ajouté dans le classpath donc il ne peut pas charger la classe.
Remarque :
catch (SQLException sqq){sqq.getMessage();}ne permet pas de savoir quelle est l'erreur, getMessage renvoie un String (potentiellement vide) donc à moins de l'afficher cette ligne ne sert à rien, il faudrait plutôt faire un sqq.printStackTrace(), ou utiliser un Logger.
Tu peux également ne pas faire de try/catch ici vu que tu throws déjà les SQLException au niveau de ta méthode.
Est ce que pouvez m'aidez? par TeamViewer s'il est possible !
merci
La Classe DB qui sert à la connexion avec la Base de données et la suivante :
Est ce qu'il y a une Solution pour éviter ce problème lors de l'ajout ?