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 :

[UCanAccess] Utilisation pour une base Access protégée


Sujet :

JDBC Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 34
    Points : 26
    Points
    26
    Par défaut [UCanAccess] Utilisation pour une base Access protégée
    Bonjour

    J'ai fait un programme en 2010 qui se connecte sur une base Access, avec la mise à jour Java 8, mon programme de connexion à la base ne fonctionne plus.

    J'ai vu sur le net qu'on pouvait utiliser UCanAccess, j'arrive à faire fonctionner mon programme avec cet outil quand je supprime le mot de passe de connexion, si je le remets le programme ne fonctionne plus et j'ai ce message :
    GRAVE: null
    net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.0 Decoding not supported. Please choose a CodecProvider which supports reading the current database encoding.
    at net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:258)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:185)
    at interface_eil.ConnectionBDD.connect(ConnectionBDD.java:60)
    at interface_eil.frame_connexion.<init>(frame_connexion.java:43)
    at interface_eil.frame_connexion$5.run(frame_connexion.java:398)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    Caused by: com.healthmarketscience.jackcess.impl.UnsupportedCodecException: Decoding not supported. Please choose a CodecProvider which supports reading the current database encoding.
    at com.healthmarketscience.jackcess.impl.DefaultCodecProvider$UnsupportedHandler.decodePage(DefaultCodecProvider.java:126)
    at com.healthmarketscience.jackcess.impl.PageChannel.readPage(PageChannel.java:224)
    at com.healthmarketscience.jackcess.impl.UsageMap.read(UsageMap.java:130)
    at com.healthmarketscience.jackcess.impl.PageChannel.initialize(PageChannel.java:117)
    at com.healthmarketscience.jackcess.impl.DatabaseImpl.<init>(DatabaseImpl.java:516)
    at com.healthmarketscience.jackcess.impl.DatabaseImpl.open(DatabaseImpl.java:389)
    at com.healthmarketscience.jackcess.DatabaseBuilder.open(DatabaseBuilder.java:248)
    at net.ucanaccess.jdbc.DefaultJackcessOpener.open(DefaultJackcessOpener.java:32)
    at net.ucanaccess.jdbc.DBReference.<init>(DBReference.java:160)
    at net.ucanaccess.jdbc.DBReferenceSingleton.loadReference(DBReferenceSingleton.java:51)
    at net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:96)
    ... 13 more
    Voici le code que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Class.forName( "net.ucanaccess.jdbc.UcanaccessDriver" );
     
    String url = "jdbc:ucanaccess://" + path;
     
    connection = DriverManager.getConnection(url, "Admin", "toto");
    Quelqu'un saurait-il m'indiquer d'où peut venir le problème ?

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ben tu supprime le mot de passe ou tu utilise une autre base de données. Le pont jdbc odbc n'a jamais été destiné a de la production. Il est annoncé comme non supporté en java 6 (2006), et comme allant être supprimé depuis java 7

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Je ne peux malheureusement pas changer de base et je suis obligée de la protéger ....

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ben dans ce cas les options sont

    rester en java 7 -> avec tous les problème que ça engendre et qui ne vont faire qu'empirer avec le temps, nottement les problèmes de sécurité
    trouver un fournisseur permettant d'accéder à msaccess avec mot de passe -> probablement payant et cher
    avec tes petites mimine, commencer un projet pour accéder au fichier access toi même -> long, chiant, pas garantis et sujet à erreur
    Essayer d'utiliser du JNA pour accéder aux services COM de access et espérer lire la base comme ça -> pareil


    edit:

    d'après ce post,

    http://sourceforge.net/p/jackcess/di...read/5d1c92b1/
    l'encryption est supportée par jackcess depuis la 1.2.13, tu utilise quelle version?

    As-tu essayé ce code proposé par ucanaccess pour l'encryptage:
    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
    Example for UCanAccess2. Notice that you must use UCanAccess 2.x.x with jackcess-encrypt-2.x.x and all related dependecies
    package yourPackage.example;
     
    import java.io.File;
    import net.ucanaccess.jdbc.JackcessOpenerInterface;
    //imports from Jackcess Encrypt
    import com.healthmarketscience.jackcess.CryptCodecProvider;
    import com.healthmarketscience.jackcess.Database;
    import com.healthmarketscience.jackcess.DatabaseBuilder;
     
    import net.ucanaccess.jdbc.JackcessOpenerInterface;
     
    public class CryptCodecOpener implements JackcessOpenerInterface {
      public Database open(File fl,String pwd) throws IOException {
       DatabaseBuilder dbd =new DatabaseBuilder(fl);
       dbd.setAutoSync(false);
       dbd.setCodecProvider(new CryptCodecProvider(pwd));
       dbd.setReadOnly(false);
       return dbd.open();
     
      }
      //Notice that the parameter setting autosync =true is recommended with UCanAccess for performance reasons.
      //UCanAccess flushes the updates to disk at transaction end.
      //For more details about autosync parameter (and related tradeoff), see the Jackcess documentation.
    }

Discussions similaires

  1. Quel Provider pour une base access?
    Par brocexco dans le forum Bases de données
    Réponses: 3
    Dernier message: 04/09/2010, 09h49
  2. [XL-2007] Connection à une base Access protégée par mot de passe
    Par Monkey_D.Luffy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/09/2010, 12h00
  3. Comment ouvrir une base Access protègée par mot de passe
    Par Le Pharaon dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 26/09/2006, 13h53
  4. Script pour une Base Access
    Par Soulama dans le forum Access
    Réponses: 4
    Dernier message: 04/04/2006, 10h05
  5. [MFC] Comment créer et utiliser une base Access
    Par maitre hibou dans le forum MFC
    Réponses: 3
    Dernier message: 10/05/2004, 18h11

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