2014-02-24 36 views
2

的程序從數據庫retrive記錄無法連接到數據庫(「架構不匹配」錯誤)

 import java.sql.*; 
     import javax.sql.*; 

public class Database 
{ 
    public static void main(String a\[\]) 
    { 
     try 
     { 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     Connection cn =DriverManager.getConnection("jdbc:odbc:data"); 
     Statement st=cn.createStatement(); 
     ResultSet rs= st.executeQuery("select * from student "); 
     while(rs.next()) 
     { 
      int r=rs.getInt(1); 
      String n= rs.getString(2); 
      int m=rs.getInt(3); 
      System.out.println("Roll Name Marks"); 
      System.out.println(r+" "+n+" "+m); 
     } 
     cn.close(); 
     } 
     catch(Exception e) 
     { 
     } 
    } 
}][1] 

我運行64位Windows 7 從SYSWOW64文件夾 創建的DSN有一個包括3場卷名稱的標誌 編譯沒有錯誤後數據庫中找到 執行無輸出 程序的結果爲什麼我不能執行程序

![在COM普通話行沒有輸出] [1]

從評論編輯

我得到的例外是

SQLException: [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application

+0

在catch塊中使用e.printStackTrace()來查看是否有任何異常。 – Rahul

+0

您可能在運行時遇到異常,但由於空的catch塊阻止您看不到它。您必須確定Java,DSN和MS ODBC驅動程序都是32位或64位的相同體系結構。否則,你會遇到兼容性問題。 – dic19

+0

這是輸出java.sql.SQLException:[微軟] [ODBC驅動程序管理器]指定的DSN contai ns驅動程序和應用程序之間的架構不匹配 – Nik6019

回答

1

基於此錯誤:

java.sql.SQLException: [Microsoft][ODBC Driver Manager] The specified DSN contai ns an architecture mismatch between the Driver and Application 

的問題是你的Java架構是基於可能的64位,但是,當你通過此路徑訪問Odbcad32.exe

%windir%\SysWoW64\odbcad32.exe 

你實際上訪問ODBC控制器的32位版本。因此你有架構不匹配問題。查看answer瞭解更多詳情。

爲了使它工作,您必須確保Java,DSN和MS ODBC驅動程序都是32位或64位的相同體系結構。

因此,您可以:

  • 下載32位JDK,並留下你已經有DSN。
  • 直接從%windir%\System32文件夾(是 64位版本)訪問DSN並在那裏創建數據源。
+0

我應該得到office 64位還是jdk 32位...(jdk是64位) – Nik6019

+0

正確。我以前也有同樣的問題,因爲我的辦公室是32位的。我已經下載了jdk 32位並通過與你相同的路徑訪問DSN。然後所有的都是32位的,它的功能就像一個魅力。 @ user3346898 – dic19

+0

感謝一切工作如魅力 – Nik6019

-2

當您收到沒有Java異常/錯誤,並沒有輸出,它似乎可以連接到數據庫,它不包含任何數據。

+0

不包含它包含四個recoed – Nik6019

+0

例外可能在那裏。但是你沒有打印這個例外。所以沒有產量可能在那裏。 – Rahul

+1

@ user3346898那麼你必須進行調試,如果沒有關於代碼的具體問題,我們不會幫助你進行遠程調試。 – Smutje

相關問題