Problème requête

Problème requête - Java - Programmation

Marsh Posté le 25-05-2008 à 20:43:26    

Bonjour tout le monde j'ai un problème de connexion à une base de données et il est très urgent de le résoudre,voilà le code:
 

public int Recherche_Vol(String Ville_D,String Ville_A,String Date_D,String Date_A,String Horaire_D,String Horaire_A)throws SQLException,ClassNotFoundException{
  int prix=0;
  String dbUrl = "jdbc:odbc:Agence";
     String user = "";
     String password = "";
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver" );
     Connection c = DriverManager.getConnection(dbUrl, user, password);
     Statement s = c.createStatement();
     ResultSet r =
       s.executeQuery(
         "SELECT Vol.Prix " +
              "FROM Ville_Départ INNER JOIN (Ville_Arrivée INNER JOIN Vol ON Ville_Arrivée.Nom_A = Vol.Nom_A) ON Ville_Départ.Nom_D = Vol.Nom_D " +
              "WHERE " +
              "(Ville_Arrivée.Nom_A=" + Ville_A + "') " +
              " AND (Vol.[Date-D]=" + Date_D + " ) " +
              " AND (Vol.Date_A=" + Date_A + " ) " +
              " AND (Vol.Horaire_D=" + Horaire_D + " ) " +
              " AND (Vol.Horaire_A=" + Horaire_A + " ) " );
     while(r.next()) {
    prix=r.getInt("Vol.Prix" );
     }
     s.close();  
     return prix;
   }

 
L'erreur: [Microsoft][Gestionnaire de pilotes ODBC] Source de données introuvable et nom de pilote non spécifié
 
Merci je m'aider,car je débute en JDBC et je n'arrive pas à trouver le problème.Je précise que je suis sous vista,que j'utilise Eclipse et que ma BD a été réalisé sous Access.


Message édité par GL912 le 25-05-2008 à 20:56:35
Reply

Marsh Posté le 25-05-2008 à 20:43:26   

Reply

Marsh Posté le 25-05-2008 à 20:56:02    

J'ai trouvé l'erreur je n'avais pas crée de Driver nommé Agence pour la base de donnée concernée si ça peut aider quelqun.
Mais j'ai un autre problème maintenant.Voici l'erreur:
 
[Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe dans la chaîne dans l'expression « (Ville_Arrivée.Nom_A=Paris')  AND (Vol.[Date-D]=22-06-2008)  AND (Vol.Date_A=25-06-2008)  AND (Vol.Horaire_D=Matin)  AND (Vol.Horaire_A=Midi) ».
 
Je ne comprend pas la requête marche sous access.

Reply

Marsh Posté le 25-05-2008 à 21:00:29    

il est ou ton site qu'on vienne y faire de l'injection ?

Reply

Marsh Posté le 25-05-2008 à 21:09:00    

Y a pas de site,je suis étudiant c'est mon premier programme où je manipule une base de données alors soyez tolérants SVP.
Il y a une erreur dans ma requête la voici :
) en trop dans l'expression « (Ville_Arrivée.Nom_A=)  AND (Ville_Départ.Nom_D=)  AND (Vol.[Date-D]=)  AND (Vol.Date_A=)  AND (Vol.Horaire_D=Matin)  AND (Vol.Horaire_A=Midi) ».

 

Mais je n'arrive pas à trouver le ) en trop :/

Message cité 1 fois
Message édité par GL912 le 25-05-2008 à 21:09:19
Reply

Marsh Posté le 25-05-2008 à 23:49:54    

GL912 a écrit :

Y a pas de site,je suis étudiant c'est mon premier programme où je manipule une base de données alors soyez tolérants SVP.
Il y a une erreur dans ma requête la voici :
) en trop dans l'expression « (Ville_Arrivée.Nom_A=)  AND (Ville_Départ.Nom_D=)  AND (Vol.[Date-D]=)  AND (Vol.Date_A=)  AND (Vol.Horaire_D=Matin)  AND (Vol.Horaire_A=Midi) ».

 

Mais je n'arrive pas à trouver le ) en trop :/


Bah règle #1: on ne construit jamais des requêtes en faisant des "machin = " + arg
=> TOUJOURS utiliser http://java.sun.com/j2se/1.4.2/doc [...] ement.html


Message édité par Taz le 25-05-2008 à 23:51:24
Reply

Marsh Posté le 26-05-2008 à 00:25:28    

Je l'ai fait mais le variable prix que j'ai mise reste à 0.
Ça ne marche pas.Pour prendre la valeur retournée je fais
ResultSet r =P.executeQuery();
Puis Prix=r.getInt() non ?

 

Edit:En fait ça marche fallait faire r.getInt(1) merci Taz je vais enfin pouvoir dormir.


Message édité par GL912 le 26-05-2008 à 00:34:26
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed