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

JDBC Java Discussion :

Comment faire un critère avec les dates en JDBC


Sujet :

JDBC Java

  1. #1
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2005
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2005
    Messages : 246
    Points : 159
    Points
    159
    Par défaut Comment faire un critère avec les dates en JDBC
    Bonne et heureuse année à tout le monde !

    Je voulais avec JDBC attaquer une base de données. J'ai ainsi fait la requête suivante :

    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
     
    public void rechercheParDate(){ 
    		Statement st=null;
    		ResultSet rs=null;
    		try {
    			st=connect.createStatement(); 
    			rs=st.executeQuery("SELECT Vol.NumVol, Vol.DateVol, Vol.HeureVol, Vol.VilleDep, Vol.VilleArr, Vol.TypeVol"+
    					" FROM Vol WHERE (((Vol.DateVol)='"+"02/07/09"+"'))");
     
    			while(rs.next()){
    				System.out.println(rs.getString("NumVol")+" "+rs.getDate("DateVol")+" "+rs.getTime("HeureVol")+" "+
    						rs.getString("VilleDep")+" "+rs.getString("VilleArrivee")+" "+rs.getString("TypeVol"));
    			}
    		} catch (SQLException e) {e.printStackTrace();}
     
    	}
    Quand j'exécute mon code, j'ai une erreur avec mon critère dans WHERE. Au fait, c'est avec la date que j'ai des problèmes.

    J'ai aussi un embarrat entre java.util.Date et java.sql.Date, quel type utilisé pour mes dates.

    Voici l'erreur qui s'affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    java.sql.SQLException: [Microsoft][Pilote ODBC Microsoft Access] Type de données incompatible dans l'expression du critère.
    	at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
    	at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
    	at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111)
    	at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
    	at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
    	at af.CompagnieAf.rechercheParDate(CompagnieAf.java:41)
    	at af.GestionAF.main(GestionAF.java:16)

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Bonne et heureuse...

    Pour les requêtes JDBC, le mieux serait de prendre l'habitude d'utiliser le PreparedStatement, beaucoup plus sûr.
    Il faudrait faire ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    PreparedStatement pstmt = connection.prepareStatement("SELECT * FROM Vol WHERE Vol.DateVol=?");
    pstmt.setDate(1, uneDate);   // <-- là, c'est une java.sql.Date
    ResultSet rs = pstmt.executeQuery();
    while (rs.next())
    {
       ...
    }
    Pour créer une date à partir d'une String, tu peux passer par SimpleDateFormat par exemple, ceci retourne une java.util.Date, donc incompatible directement avec JDBC (dommage), mais facile à convertir.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
    java.util.Date date1 = sdf.parse("2008/12/31");
    java.sql.Date date2 = new java.sql.Date(date1.getTime());
    Voilà, à toi de faire...
    A+

  3. #3
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2005
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2005
    Messages : 246
    Points : 159
    Points
    159
    Par défaut
    Merci. On ne peut pas être plus clair.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Comment faire une requete avec 23 critères "ou" sur colonnes differentes
    Par sebing dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 14/09/2010, 19h33
  2. Réponses: 6
    Dernier message: 06/02/2009, 11h29
  3. Comment faire un graphique avec des dates
    Par T-MAT dans le forum MATLAB
    Réponses: 3
    Dernier message: 03/01/2009, 10h35
  4. Comment faire un Select avec les formulaires sous Access?
    Par kesamba dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 21/11/2007, 10h57
  5. Réponses: 3
    Dernier message: 19/06/2007, 22h34

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