java.sql.SQLException: [Microsoft][ODBC 驅動程序管理器] 在指定的 DSN 中,驅動程序和應用程序之間的體系結構不匹配


今天把sql server 2008 r2裝了起來,64位的,然后就迫不及待地體驗連接數據庫的操作,編程語言是java。我一開始學了一種非常老的連接方式,使用JDBC-ODBC橋。初次使用不太熟練,所以這里把詳細步驟記下來。

首先是配置ODBC數據源,打開控制面板,小圖標方式查看,我看到有個

這個圖標是好像是32位ODBC的標志,我點擊啟動了它,啟動的卻是64位的ODBC管理工具,

我在“用戶DSN”面板下點擊了“添加”按鈕,彈出“創建新數據源”窗口,

我雙擊“SQL Server”,彈出下面這個窗口

我在“名稱”一欄里填上“hp4”,在“服務器”一欄里填上“(local)”(服務器一欄可以從下拉菜單選擇的,下拉列表里為空時可以填“(local)”或計算機名,計算機名可以在計算機屬性里看到),然后下一步

來到下面這個窗口,選擇“使用用戶輸入登錄ID……”,登錄名填“sa”,密碼填寫sa賬戶的密碼,下一步

一直下一步到完成,彈出配置信息,可以測試下數據源

到這里為止,數據源配置完成了。

接下來啟動Myeclipse,新建web project,給index.jsp添加sql包引用,pageEncoding設置成“utf-8”

在body里面添加如下代碼:

<%

  try{

  Connection Con;

  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

  Con = DriverManager.getConnection("jdbc:odbc:hp4","sa","123456");

  System.out.println("Step1 goes well");

  }

  catch(Exception e){

  System.out.println("Step1 down");

  e.printStackTrace();

  }

%>

 

在MyEclipse內置瀏覽器中訪問上面的頁面,控制台輸出“Step1 goes well”,表示連接成功。

JDBC-ODBC橋內置在JDK中,所以不需要另外添加驅動包,上面的代碼意思是連接成功就在控制台輸出“Step1 goes well”,連接出錯就在控制台輸出“Step1 down”。

 

創建數據源的過程我還存在很多疑問。

首先是啟動ODBC管理器時應該啟動32位還是64位?

在控制面板中點擊 “管理工具”,會看到有兩個ODBC管理器,

我在這次演示中啟動的是64位,

 

然后就是應該在“用戶DSN”面板下還是在“系統DSN”面板下新建數據源?

我之前在“系統DSN”面板下創建了兩個數據源,連接時都報錯了,錯誤信息是

 

java.sql.SQLException: [Microsoft][ODBC 驅動程序管理器] 在指定的 DSN 中,驅動程序和應用程序之間的體系結構不匹配

 

我百度這個錯誤,網上說是因為32位和64位的問題,64位系統應該建立64位DSN,但我在系統DSN下建立的DSN確實是64位的,如下圖,連接下面兩個DSN都會報上面那個錯誤。

我在用戶DSN面板下創建的DSN貌似是32位和64位都支持的,如下圖的hp2、hp3、hp4

暫時沒有其它問題了。上面兩個問題懶得探討了,很簡單的控制變量法就能檢查出來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM