在64位環境下Java串連Access2010的問題與解決

來源:互聯網
上載者:User

標籤: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的問題與解決

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.