2011-07-15 2 views
1

Je souhaite accéder à une base de données à l'aide d'une chaîne de connexion fournie par une application tierce. J'ai un exemple de configuration qui a une chaîne de connexion comme ce qui suit:Java ODBC et Microsoft.Jet.OLEDB.4.0

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\path\to\theDatabase.mdb;Persist Security Info=False 

Appel

DriverManager.getConnection("jdbc:odbc:" + connectionString); 

me donne une SQLException: [Microsoft] [Pilote ODBC Manager] Nom de la source de données introuvable et aucun défaut pilote spécifié

  • L'application tierce peut accéder à la base de données sans problème.
  • Le système d'exploitation est Windows XP Service Pack 3 et est à jour.
  • Le msjet40.dll dans le dossier system32 a la version 4.0.9511.0 (à jour selon http://support.microsoft.com/kb/239114/en-us)
  • Le fichier existe et je peut l'accès à l'aide jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};C:\path\to\theDatabase.mdb

Je ne sais pas ce que je fais mal.

+0

Votre fichier MDB est-il dans 'Data Source = C: \ path \ to \ theDatabase.mdb'? – Jacob

+0

Oui, la source de données pointe vers le fichier MDB. (J'ai changé le chemin vers le fichier mdb dans ma question, bien sûr.) – niks

Répondre

1

Cela pourrait être un problème. Je ne connais pas de pilotes JDBC pour les sources de données OLE DB. Ici sur SO cette questions se trouve sans les réponses de Mars: https://stackoverflow.com/questions/5184046/jdbc-oledb-bin.

+0

Merci pour votre réponse. Le problème était que je pensais que la chaîne de connexion est une chaîne de connexion ODBC, mais ce n'est pas le cas. C'est une chaîne de connexion OLE DB. Donc 'jdbc: odbc: ...'ne fonctionnera pas. – niks

0

Reportez-vous au wesite dessous contient des chaînes de connexion de toutes les variantes pour toutes les bases de données

http://www.connectionstrings.com/

+0

J'ai déjà trouvé ce site, mais cela ne m'aide pas. Iv'e a comparé les chaînes de connexion avec celles trouvées sur le site et ne voit pas pourquoi cela ne devrait pas marcher. – niks

+0

Merci pour votre réponse rapide! J'ai découvert que la chaîne de connexion ** n'est pas ** une chaîne de connexion ODBC mais une chaîne de connexion OLE-DB. La syntaxe semble être la même mais ce sont deux systèmes de bases de données complètement différents ... – niks

2

problème est à votre connexion odbc Pour connecter la base de données d'accès essayer suivant

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    Connection con = DriverManager.getConnection("jdbc:odbc:connSource"); 

goto ControlPanel-> AdministrativeTools-> DataSource (ODBC) -> Système DSN-> ADD-> MicrosoftAccess->

puis dans le champ Nom donne le nom de la source en tant que connSource.

vous devez utiliser ce nom au lieu du nom de la base de données dans votre méthode DriverManager.getConnection.

Parce que getConnectionMethod prend le nom de la source et non le nom de la base de données. donc votre code ne fonctionne pas.

+0

Je ne peux pas le faire car - comme je l'ai mentionné - la chaîne de connexion est donnée par une application tierce. Et selon [ce site] (http://www.carlprothman.net/Default.aspx?tabid=87#OLEDBProviderForMicrosoftJet) la chaîne devrait fonctionner. – niks

+0

Merci pour votre réponse rapide! – niks

Questions connexes