2011-07-15 65 views
1

我想使用由第三方应用程序给出的连接字符串来访问数据库。我有了一个连接字符串类似以下示例配置:Java ODBC和Microsoft.Jet.OLEDB.4.0

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

调用

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

给了我一个SQLException:[微软] [ODBC驱动程序管理器]数据源名称未找到,没有默认指定的驱动程序

  • 第三方应用程序可以毫无问题地访问数据库。
  • 操作系统是Windows XP Service Pack 3并且是最新的。
  • 在System32文件夹中的Msjet40.dll具有版本4.0.9511.0(最新根据http://support.microsoft.com/kb/239114/en-us
  • 文件存在,我可以访问它使用jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};C:\path\to\theDatabase.mdb

我只是不知道我做错了什么。

+0

您的MDB文件在'Data Source = C:\ path \ to \ theDatabase.mdb'中吗? – Jacob

+0

是的,数据源指向MDB文件。 (当然,我在我的问题中改变了mdb文件的路径。) – niks

回答

1

这可能是一个问题。我不知道任何用于OLE DB数据源的JDBC驱动程序。在这里,这个问题没有来自3月的答案:https://stackoverflow.com/questions/5184046/jdbc-oledb-bin

+0

感谢您的回复。问题是我认为连接字符串是一个ODBC连接字符串,但它不是。它是一个OLE DB连接字符串。因此'jdbc:odbc:...'不起作用。 – niks

0

参考wesite低于它包含所有变型的连接字符串的所有数据库

http://www.connectionstrings.com/

+0

我已经找到了这个网站,但它对我没有帮助。 Iv'e将连接字符串与网站上的连接字符串进行比较,并不明白为什么它不起作用。 – niks

+0

感谢您的快速响应!我发现连接字符串**不是** ODBC连接字符串,而是一个OLE-DB连接字符串。语法似乎是相同的,但他们是两个完全不同的数据库系统... – niks

2

问题是在你的ODBC连接 要连接Access数据库尝试以下

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

转到ControlPanel-> AdministrativeTools-> DataSource(ODBC) - > System DSN-> ADD-> MicrosoftAccess->

然后在名称字段中给源名称作为connSource。

您必须在DriverManager.getConnection方法中使用此名称而不是数据库名称。

由于getConnectionMethod采用源名称而不是数据库名称。所以你的代码不工作。

+0

我不能这样做,因为 - 正如我所提到的 - 连接字符串由第三方应用程序给出。并根据[本网站](http://www.carlprothman.net/Default.aspx?tabid=87#OLEDBProviderForMicrosoftJet)该字符串应该工作。 – niks

+0

感谢您的快速响应! – niks

相关问题