IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

[JAVA] Probleme de connexion a ACCESS via une Servlet.


Sujet :

Access

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut [JAVA] Probleme de connexion a ACCESS via une Servlet.
    Bonjour,
    j'ai un gros probleme et j'espere que de poster un message sur ce site m'aidera a le resoudre.
    Je veux me connecter a une bd Access via une Servlet; la connexion marche, est activee mais des que je veux creer une requete, ca bug au niveau du createStatement().

    On me renvoit cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    java.sql.SQLException: General error
            at sun.jdbc.odbc.JdbcOdbc.throwGenericSQLException(JdbcOdbc.java:7087)
            at sun.jdbc.odbc.JdbcOdbc.SQLAllocStmt(JdbcOdbc.java:174)
            at sun.jdbc.odbc.JdbcOdbcConnection.createStatement(JdbcOdbcConnection.j
    ava:413)
            at sun.jdbc.odbc.JdbcOdbcConnection.createStatement(JdbcOdbcConnection.j
    ava:396)
    J'ai bien cherche comment resoudre cette erreur mais je n'ai rien trouve qui marche.

    Voici le code de ma Servlet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    import java.io.*;
    import java.util.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.sql.*;
    public class projetServlet13 extends HttpServlet {
     
    private final String title="Génération de formulaire";
    private final String DSName= "onlineReportdataSource";
    private final String dbURL= "jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=u:\\projet\\Projet.mdb";
     
     Connection connexion=null;
            Statement st=null;
            ResultSet rs=null;
    private String msgErreur0=null;
     
    public void init(ServletConfig config){
     
    try{
                //il s'agit maintenant de se connecter à la base de données
    			// Connexion à la Bd
    			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
                            connexion=DriverManager.getConnection(dbURL,"Admin","");
                            System.out.println(connexion);
                            DatabaseMetaData dmd = connexion.getMetaData();
                            int type = dmd.getSQLStateType();
                            String sType = "";
                            if(type == DatabaseMetaData.sqlStateSQL99){
                               sType = "SQL99";
                            }
                            if(type == DatabaseMetaData.sqlStateXOpen ){
                               sType = " XOPEN";
                            }
    System.out.println("Les SQLState suivent la norme "+sType);
    		}catch (Exception ex){
                        //probleme de connectio
                        System.out.println(ex);
                        System.out.println("pas de connexion a la bd");
                        } finally{
                            try {connexion.close();} catch (Exception ex) {}
                        }
    	}//init
     
     
    public void doGet(HttpServletRequest request,HttpServletResponse response)
    	throws IOException, ServletException{
     
    //on récupère les paramètres envoyés Login et MDP de l'utilisateur
    		String login=request.getParameter("login");
    		String pwd=request.getParameter("pass");
     
     
     try{
     
                    //Objet statement
                    System.out.println("avant");
                    st=connexion.createStatement();
                    System.out.println("apres");
          		//exécution requete pour récupérer valeurs dansla Bd puis les comparer
    		rs=st.executeQuery("SELECT password From Personne where name="+login;);
                    System.out.println("le mot de passse de l'utilisateur est"+rs.getString("password"));
     
                }catch (SQLException ex){
                        //problème
                        msgErreur0=ex.getMessage();
                        System.out.println(ex);
                        System.out.println(ex.getSQLState());
                        System.out.println(ex.getErrorCode());
                        System.out.println(ex.getMessage());
                        ex.printStackTrace ();
                        while(ex!=null) {
                            System.out.println("passe");
                            ex = ex.getNextException();
                            if (ex!=null) System.out.println(ex);
                        }
                        System.out.println("probleme avec la requete");
                        }
    	catch (Exception e) { System.out.println(e); }
                        finally{
                            try{rs.close();}catch(Exception ex){}
                            try{st.close();}catch(Exception ex){}
                        }
     
     
      // on indique le contenu du document
    		response.setContentType("text/html");
    		// flux de sortie
    		PrintWriter out=response.getWriter();
     
     
     
                // on compare les password
                try{
                    if (rs.getString("password") != pwd) {
                        out.println("<html><head><title>" + title +
                                    "</title></head>");
                        out.println("<body>");
                        out.println(
                                "<h3>+ Incorrect password: Would you please reenter it !+</h3>");
                        out.println("</body></html>");
                        return;
                    } //if
                }catch(Exception ex){}
     
     
                   // on gere les messages d'erreur
    		if (msgErreur0!=null){
    			//on genere la page d'erreur
    			out.println("<html><head><title>"+title+"</title></head>");
    			out.println("<body><h3>Application indisponible : vous avez entre un mauvais login ou password !</h3></body>");
                            out.println("</html>");
    			return;
    		}//if
     
     
    	// A ce stade, on envoit la reponse, a savoir, la 2e page HTML, le sommaire
    		out.println("<html>");
    		out.println("<title>+onlineReport.com+</title>");
    		out.println("<body bgcolor=\"white\">");
    		out.println("<br><br><br>");
    		out.println("<center>");
                    out.println("<h2>+WELCOME TO ONLINEREPORT.COM+</h2>");
                    out.println("</center>");
    		out.println("<center>");
                    out.println("<h3>+Here are the services we offer you:+</h3>");
                    out.println("</center>");
    		out.println("<br><br>");
    		out.println("<li>");
    		out.println("<A HREF=claimReport.html>+ FILL CLAIM REPORT_to fill within the 5 days following the accident.+</A>");
    		out.println("</body>");
    		out.println("</html>");
    	}
     
    	//post
    	public void doPost(HttpServletRequest request,HttpServletResponse response)
    	throws IOException, ServletException
    	{
    		//renvoie sur GET
    		doGet(request,response);
    	}
     
    }
    Voila, le bug se trouve au niveau donc du createStatement(); "Avant" s'affiche puis ensuite le message d'erreur que je vous ai montre au debut.
    je n'ai sincerement aucune idee d'ou cela pourrait venir, je remercie enormement toute personne capable de me debloquer.
    [/quote]

    mod : cafeine, tag [JAVA]

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut Re: [JAVA] Probleme de connexion a ACCESS via une Servlet.
    Bonjour,

    Juste pour tester, place dans doGet() l'initialisation de l'objet [connexion].

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Re: [JAVA] Probleme de connexion a ACCESS via une Servlet.
    Bonjour,

    Merci de m'avoir repondu, j'ai donc initialiser et creer l'object connection dans le doGet() mais ca ne change rien, j'obtiens toujours la meme erreur au meme endroit, au niveau du "createStatement".

    Merci quand meme pour ta reponse, si t'as d'autres idees comme ca, n'hesites surtout pas lol

    Salut.

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut Re: [JAVA] Probleme de connexion a ACCESS via une Servlet.
    Citation Envoyé par rider4ever
    [...] si t'as d'autres idees comme ca, n'hesites surtout pas lol
    D'autres idées...

    Es-tu sûr du newInstance() ? Que se passe-t-il si tu ne le mets pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
    Peut-être le problème est-il au niveau de la désignation de la source de données ODBC ?
    Dans le lien ci-dessous, on explique comment créer une connexion ODBC via un DSN, technique qui semble plus fiable que la connexion directe que tu utilises... à voir.
    http://www.planet-source-code.com/vb...=2691&lngWId=2

    Au fait, en passant j'ai remarqué que la requête SQL ne fonctionnera pas car le login doit être encadré de guillements simples, ce qui donne quelque chose comme...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rs=st.executeQuery("SELECT password From Personne where name='"+login+"';");
    Sinon, je ne vois pas autre chose à dire... pour l'instant

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Re: [JAVA] Probleme de connexion a ACCESS via une Servlet.
    OK je vais essayer de faire tout ca...

    En effet au niveau du lien que tu m'as passe, il y a un code qui soit disant me premettrait de me connecter directement a ma BD.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String filename = "d:/java/mdbTEST.mdb";
                String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
                database+= filename.trim() + ";DriverID=22;READONLY=true}"; 
     
                Connection con = DriverManager.getConnection( database ,"","");
    Il y a neanmoins un ti probleme de syntaxe au niveau de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    database+= filename.trim() + ";DriverID=22;READONLY=true}";
    le dernier ";" pose probleme ainsi que la parenthese fermante qui n'a jamais ete ouverte d'ailleurs.

    perso, j'ai essaye pas mal de configuration mais je trouve pas la solution qui marche... Qui sait, ca pourrait etre la solution a tous mes problemes .

    PS: je sais, c que de la synthaxe mais je suis pas vraiment ce qu'on pourrait appeler un crack en JAva .

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut Re: [JAVA] Probleme de connexion a ACCESS via une Servlet.
    Je pensais plutôt à une connexion via un DSN ODBC, ne serait-ce que pour vérifier que le driver ODBC est OK et que la connexion est possible.

    Un lien vers un tutoriel qui explique vraiment tout :
    http://www.mundayweb.com/progs/jdbc-odbc-tut.php

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Re: [JAVA] Probleme de connexion a ACCESS via une Servlet.
    Ouais non ca ne marche toujours pas, et puis de passer par le driver ODBC de Windows, jai deja essaye aussi.

    C'est pas la connexion qui bug, c au moment de la requete... Ce foutu createStatement la ... je desespere lol

    Enfin bon merci quand meme pour tout.

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut Re: [JAVA] Probleme de connexion a ACCESS via une Servlet.
    Juste pour savoir...

    As-tu tenté de faire un simple programme JAVA (comme dans le dernier lien que je t'ai donné), et pas un Servlet, ne serait-ce que pour limiter la complexité du débogage ?

    As-tu tenté de laisser une chaîne de caractère vide à la place du nom de user ET du mot de passe (apparemment, la sécurité Access n'est pas activée dans ta base, je me trompe ?).

    BON COURAGE

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Re: [JAVA] Probleme de connexion a ACCESS via une Servlet.
    J'ai execute le meme code mais dans un programme java simple, et ca marche, y a pas de bug cette fois-ci!

    Et le fait de laisser les champs user et password vides ne changent rien !

    Par contre ca bug toujours dans ma servlet...

    Que celui qui y comprend quelque chose vienne a moi lol

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    import java.sql.*;
     
    public class Test1 {
        public static void main(String args[]) {
     
     
            String login="misterOrange";
            Connection con;
            ResultSet rs=null;
            String filename="u:\\projet\\Projet.mdb";
            String dbURL= "jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ="+ filename.trim() + ";DriverID=22;READONLY=true;";
     
           try{
                System.out.println("ca marche ?");
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                System.out.println("waouuuuuuuuuuuuuuu");
                con=DriverManager.getConnection(dbURL,"Admin","");
                System.out.println("presque ?");
                Statement stmt = con.createStatement();
                System.out.println("OUI");
                rs=stmt.executeQuery("SELECT password From Personne where name='"+login+"';"); 
                System.out.println(" c la fete ! enfin presque.");
     
                while (rs.next()) {
                   String s = rs.getString("password");
                   System.out.println("le mot de passse de l'utilisateur est"+"  "+s);
                }
                System.out.println("Maintenant c bon");
     
            }
            catch(ClassNotFoundException e){
                System.out.println(e.toString());
            }
            catch(SQLException e){
                System.out.println(e.toString());
            }
     
        }
    Pffff ca ca marche par contre

Discussions similaires

  1. Connexion à une base MySQL via une Servlet
    Par maxinformatique dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 25/05/2007, 15h18
  2. Réponses: 1
    Dernier message: 30/03/2007, 14h10
  3. Supprimer la valeur d'un champs access via une chaine SQL
    Par beegees dans le forum Langage SQL
    Réponses: 4
    Dernier message: 23/10/2006, 15h20
  4. [ODBC]connexion a sybase via une macro excel
    Par ricoree78 dans le forum Sybase
    Réponses: 3
    Dernier message: 06/10/2006, 16h52
  5. Probléme de connexion avec ATT via une freebox
    Par ybertrand dans le forum Hardware
    Réponses: 3
    Dernier message: 17/10/2005, 16h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo