Problème de connexion à une base de donnée Access avec une servlet

Signaler
Messages postés
47
Date d'inscription
samedi 27 mars 2004
Statut
Membre
Dernière intervention
1 juillet 2007
-
Messages postés
9
Date d'inscription
lundi 12 juin 2006
Statut
Membre
Dernière intervention
21 avril 2010
-
Bonsoir,
J'essaie en ce moment de réaliser une servlet qui permettrait de faire des requêtes sur une base de données Access. J'ai donc realisé pour cela le programme suivant (permettant simplement de lister les utilisateurs referencés dans une table) :

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class Hotels extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{ PrintWriter out = response.getWriter();
HttpSession session = request.getSession(true);

Connection conn = null;
Statement lien = null;
String statut = (String)session.getAttribute("role");
try {
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
}
catch(Exception e) { out.println("Erreur de chargement du driver"); }
out.println("Driver charge");
conn = null;
// Etablissement de la connexion
try
{
conn=DriverManager.getConnection("jdbc:odbc:hotel");
}
catch(Exception e) { out.println("Pb de connexion"); }
lien = conn.createStatement();
String requete = "Select * FROM Utilisateurs";
ResultSet rs = lien.executeQuery(requete);
out.println("<html>");
out.println("<head>");
out.println("<title>Request Parameters Example</title>");
out.println("</head>");
out.println("");
while(rs.next())
{
System.out.println(rs.getString("nom"));
}
out.println("");
out.println("</html>");
}
catch(Exception e) {}

}

public void doPost(HttpServletRequest request, HttpServletResponse res)
throws IOException, ServletException
{
doGet(request, res);
}
}

Mais le programme plante toujours au niveau de l'etabilssement de la connexion à la BDD, precisement au niveau de l'appel de la méthode DriverManager.getConnection(.....).

Curieusement, j'ai constaté qu'avec un programme Java normal (avec un main), la connexion vers cette même BDD ne pose aucun problème :

import java.sql.*;
public class PrintAllDB{
public static void main(String[]args)
throws SQLException,ClassNotFoundException{
// Chargement dynamique du driver
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(Exception e) { System.out.println("Erreur de chargement du driver"); }
System.out.println("Driver charge");
Connection conn = null;
// Etablissement de la connexion
try
{
conn=DriverManager.getConnection("jdbc:odbc:hotel");
}
catch(Exception e) { System.out.println("Pb de connexion"); }
Statement lien = conn.createStatement();
String requete = "Select * FROM Utilisateurs";
ResultSet rs = lien.executeQuery(requete);
while(rs.next())
{
System.out.println(rs.getString("nom"));
}
}
}

Ca fait un moment que je cherche, mais je ne vois absolument pas d'où peut venir le problème. Qqn pourrait-il me donner des pistes ?
Merci d'avance.

2 réponses

Messages postés
1155
Date d'inscription
samedi 17 janvier 2004
Statut
Membre
Dernière intervention
29 avril 2011
3
Salut,

quelle est l'erreur exactement ?
hotel est une source de données ODBC ?
Messages postés
9
Date d'inscription
lundi 12 juin 2006
Statut
Membre
Dernière intervention
21 avril 2010

Bonjour, je voudrais remettre ce sujet au gout du jour, j'ai le même soucis, quand je veux faire une servlet pour afficher une table, il me dit:

[Microsoft][Gestionnaire de pilotes ODBC] Source de données introuvable et nom de pilote non spécifié

alors que dans un simple programme java comme le second programme de yakurena, cela fonctionne parfaitement...

je vous copie les 2 programmes:

import java.sql.*;
public class TestConnect
{
public static void main(String args[]) throws Exception
{
// enregistrement du driver
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// connexion ˜A la base
String url = "jdbc:odbc:gestionclients";
String nom = "";
String mdp = "";
Connection con = DriverManager.getConnection(url,nom,mdp);
Statement stmt = con.createStatement();
System.out.println("OK");
String query = "select * from utilisateur";
System.out.println(query);
ResultSet rs = stmt.executeQuery(query);

System.out.println("Liste des clients:");
while (rs.next())
{
String n = rs.getString(1); // nom
String p = rs.getString(2); // prenom
System.out.println(n + " " + p + " ");
}

// fermeture des espaces
con.close();
}
}





et le second:



import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


public class TestConnectS extends HttpServlet {
public void service( HttpServletRequest req, HttpServletResponse res ) throws ServletException, IOException{
HttpSession session=req.getSession(false);
PrintWriter out=res.getWriter();
res.setContentType("text/html");
out.println("<center>");

try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:gestionclients";
Connection con = DriverManager.getConnection(url,"","");
Statement stmt = con.createStatement();

String query="select * from utilisateurs";
//out.println(query);
ResultSet rs=stmt.executeQuery(query);
out.println("<form action="TstConnectS" method="post">");
out.println("<table border=1><tr><th>login </th><th> mdp </th></tr>");

while(rs.next()){
out.println("<tr>");
out.println("<td>"+rs.getString("login")+"</td><td>"+rs.getString("mdp")+"</td>");
out.println("</tr>");
}

}catch(ClassNotFoundException e){
out.println("ClassNotFoundException");
}catch(SQLException e){
out.println(e);
out.println("");
out.println("SQLException");
out.println("");
out.println(e.getMessage());
}



}
}



merci d'avance pour votre aide.
cordialement.