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 :

Java ODBC/JDBC Probleme avec MS/ACCESS


Sujet :

JDBC Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 265
    Points : 149
    Points
    149
    Par défaut Java ODBC/JDBC Probleme avec MS/ACCESS
    Bonjour,

    J'ai un petit problème que je n'arrive pas à comprendre et à résoudre.

    Habituellement j'utilise des bases MYSQL mais pour un projet bien précis, je dois me connecter à une base MS/Access (logiciel que je ne connais pas très bien).

    Cela marche plutôt bien sauf lorsque j'essaie de récupérer quelques dates. Lorsque les dates sont supérieures à 01/01/1752 en utilisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Date d = rs.Date("Zone_Date");
    String madate   = d.toString();
    je n'ai aucun problème, mais pour toutes les dates inférieures, par exemple 1748 la valeur retournée est complètement fausse. Dans ce cas présent si la date dans la base est 01/01/1748 la date retournée est 31/12/1747. Comme si il retirait une journée.

    Pire, si la date est 01/01/1111 la date retournée est 28/07/1110.

    Bien sûr lorsque je visualise la table avec MS/Access la date affichée est correcte (donc la base est bonne).

    Cela peut sembler bizarre que j'utilise ces dates du moyen âge ou de la révolution, mais il s'agit d'un projet pour une thèse de doctorat en histoire.

    Je subodore un problème avec le driver ODBC mais je n'en suis pas certain.

    Voici comment je me connecte à cette base :
    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
     
      public  static java.sql.Connection getConnexionACCESS()
    {
    	if (cnx!=null) return cnx;
    	try 
      	{
    		String dataSourceName = "MaBase";
     		String dbURL = "jdbc:odbc:" + dataSourceName;
     
    		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    		cnx = java.sql.DriverManager.getConnection(dbURL, "",""); 
    	    return cnx; 
    	}
      	catch (Exception ex) {System.out.println(ex.toString()); return null; }
    }
    Merci d'avance pour tout conseil ou suggestion.

    Gégé

  2. #2
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Points : 909
    Points
    909
    Par défaut
    Alors je vais peut être dire une bêtise mais la comme ça ça me fait penser à un problème de calendrier...

    Les dates sont en fait en mémoire au format numérique en miilisecondes et quand on les convertis je pense que java se prend les pieds dans les années bissextiles ect .... au cours de l'histoire elles ont pas toujours été très régulières ...


    en plus lu dans la javadoc:

    "Although the Date class is intended to reflect coordinated universal time (UTC), it may not do so exactly, depending on the host environment of the Java Virtual Machine. Nearly all modern operating systems assume that 1 day = 24 × 60 × 60 = 86400 seconds in all cases. In UTC, however, about once every year or two there is an extra second, called a "leap second." The leap second is always added as the last second of the day, and always on December 31 or June 30. For example, the last minute of the year 1995 was 61 seconds long, thanks to an added leap second. Most computer clocks are not accurate enough to be able to reflect the leap-second distinction. "

    Ca doit pas aider non plus ...

    Par contre pour la solution ... peut être essayer de passer par la classe GregorianCalendar...

    Sinon voir si des historien / dev java ont crée quelques choses pour ce problème.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 265
    Points : 149
    Points
    149
    Par défaut
    Merci Lady pour cette réponse. Toutefois je ne suis pas certain qu'il soit possible d'utiliser la classe classe GregorianCalendar puisque je récupère la date d'une ligne d'un table MS/Access. Je vais quand même essayer à tout hasard par un casting (on ne sait jamais...).

    Si d'autres idées vous viennent, n'hésitez pas. Merci encore

Discussions similaires

  1. [JDBC] Probleme avec un ResulSet
    Par Blo0d4x3 dans le forum JDBC
    Réponses: 8
    Dernier message: 09/02/2006, 19h00
  2. [JDBC] Problème avec le resultat
    Par Cyborg289 dans le forum JDBC
    Réponses: 7
    Dernier message: 27/09/2005, 12h05
  3. [JDBC]Probleme avec trigger Oracle
    Par aurel89 dans le forum JDBC
    Réponses: 2
    Dernier message: 02/08/2005, 12h53
  4. [JDBC] probleme avec les transactions
    Par lthomas dans le forum JDBC
    Réponses: 2
    Dernier message: 17/06/2005, 18h10
  5. [weblogic 8.1][JDBC] Probleme avec une requete
    Par Sniper37 dans le forum Weblogic
    Réponses: 3
    Dernier message: 08/04/2005, 12h11

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