標籤:java 資料庫 access
整理下思路,包括出現的問題及解決方案
Java串連Access的方法
1 ODBC橋接方法,就是在控制台“ODBC資料來源(32位或64位)”那裡設定DSN,百度一下,一大堆設定方法,以及什麼wow64下設定相容32位之類的東西,這裡設定的資料來源名稱acc,串連到D盤c.accdb資料庫。
主要代碼:String url ="jdbc:odbc:acc";
2 直接連接access不使用ODBC資料來源,這個就是直接寫代碼
主要代碼:String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=d:\\c.accdb";
全部代碼:
環境(失敗):
系統:win8 X64
Myeclips10 (內建JDK)
Access2010 X86
不管哪種方法都是一直不成功
總是提示:[ODBC 驅動程式管理器] 未探索資料源名稱並且未指定預設驅動程式,或是其他的錯誤
網上很多都在解釋ODBC方式,是因為64位作業系統和32位Access的原因,然後出現了要找到wow64下的ODBC,然後設定,這些我也都試過了,也不成功。最後根據一位網友提示,找到了一篇微軟的文章:http://msdn.microsoft.com/zh-cn/library/ff965871.aspx#DataProgrammingWithAccess2010_JDBCODBCExample
在下面的:使用32位和64位的ACE提供者那裡給出了詳細解釋
僅 64 位的解決方案(64 位的 Access、64 位的 Windows)
若要實現 64 位的解決方案,您必須執行以下操作:
1.在 64 位的 Windows 上部署 64 位的 Access2010
2.構建自訂的 64 位元據訪問應用程式
僅 32 位的解決方案(32 位的 Access、32 位的 Windows)
如果您有 32 位的應用程式,希望通過 Access 2010 繼續運行它而不變更,則必須安裝 32 位版本的 Access 2010。
32 位 Access 2010 的工作方式與 32 位 Access 2007完全一樣,無需對 VBA 代碼、COM 附加元件或 ActiveX 控制項變更即可繼續運行。
WOW64解決方案(32 位的 Access、64 位的 Windows)
WOW64 技術允許在 Windows 64 位的平台上執行 32 位的應用程式。可以將 32位的 Access 2010 安裝在 64 位的 Windows 上。在這種情況下,您的資料應用程式必須是 32 位才能與 ACE 提供者通訊。這是 64 位 Windows 作業系統上的預設安裝,可提供與 32 位 Office 應用程式的相容性。
儘管 32 位的應用程式能夠以透明方式運行,但是不支援在同一進程中混合使用兩種類型的代碼。64 位的應用程式不能針對 32 位的系統庫 (DLL) 進行連結,同樣 32 位的應用程式也不能針對 64 位的系統庫進行連結
也就是說如果你的系統是64位的,不管是win7,win8,如果Access是32位的,那麼你的myeclips、JDK也必須是32位的(我是這麼理解的)
早就忘了自己裝的是多少位的了,
System.out.println(System.getProperty("sun.arch.data.model"));
測試是64位的,隨後在重裝的問題上,我選擇了重裝office,重裝了64位office,一切問題迎刃而解,不管是ODBC去串連還是直接連接,都成功
所以現在的環境是
系統win8 X64 myeclips10 X64 Access2010 X64
另外兩種環境沒有去測試
就是win8 X 64 myeclips10 32位 JDK 32位 Access2010 X86
或者全是32位的
全部代碼:
import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class conn1 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; try{ Class.forName(driver); String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=d:\\c.accdb"; //String url ="jdbc:odbc:acc"; Connection con = DriverManager.getConnection(url); if(!con.isClosed()){ System.out.print("串連成功!"); } }catch(ClassNotFoundException e){ e.printStackTrace(); }catch(SQLException e){ e.printStackTrace(); } }}
本文出自 “愛技術 更愛吃燜面” 部落格,請務必保留此出處http://zynet.blog.51cto.com/777851/1570462
在64位環境下Java串連Access2010的問題與解決