Problème connexion avec la Base de Donnés (Servlet)
Fermé
tounsii007
Messages postés
15
Date d'inscription
samedi 29 octobre 2016
Statut
Membre
Dernière intervention
23 mai 2017
-
Modifié par KX le 29/10/2016 à 19:52
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 31 oct. 2016 à 14:39
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 31 oct. 2016 à 14:39
A voir également:
- Problème connexion avec la Base de Donnés (Servlet)
- Formate pour taxer client connexion ✓ - Forum Matériel informatique
- Instagram connexion - Guide
- Formules excel de base - Guide
- Facebook connexion - Guide
- Gmail connexion - Guide
1 réponse
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
29 oct. 2016 à 20:00
29 oct. 2016 à 20:00
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.
29 oct. 2016 à 20:25
29 oct. 2016 à 20:35
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); Connection conn=DriverManager.getConnection("jdbc:ucanaccess://c:/pippo.mdb");29 oct. 2016 à 21:06
Est ce que pouvez m'aidez? par TeamViewer s'il est possible !
merci
29 oct. 2016 à 21:11
Modifié par KX le 30/10/2016 à 14:08
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"); 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 la Base de données <h1>"); DB maBase = new DB(); out.println("<h1> crèation de la connexion avec la BD <h1>"); int id = 145; String ch1= "Ridha"; String ch2= "abd"; String ch3= "017856"; String sql="INSERT INTO Kunden(id,name,vorname,tel) VALUES ("+ id +","+ch1+","+ch2+","+ch3+")" ; out.println("<h1> phase d'ajout de données <h1>"); maBase.st.executeUpdate(sql); // L’exécution se bloque ici out.println("<h1> ajout avec succès <h1>"); maBase.st.close(); maBase.con.close(); out.println("</body>"); out.println("</html>"); }La Classe DB qui sert à la connexion avec la Base de données et la suivante :
import java.sql.*; /* * @author Ridha */ public class DB { Connection con=null; Statement st=null; /** * * @throws java.lang.ClassNotFoundException * @throws java.sql.SQLException */ public void DB() throws ClassNotFoundException, SQLException{ String driver ="sun.jdbc.odbc.JdbcOdbcDriver"; Class.forName(driver); con = DriverManager.getConnection("jdbc:odbc://d:/DB.mdb"); System.out.println("<h1> *** <h1>"); st= con.createStatement(); System.out.println("<h1> *** <h1>"); } }Est ce qu'il y a une Solution pour éviter ce problème lors de l'ajout ?