2015-11-20 48 views
3

我有下面的JDBC代碼。我正在嘗試創建一個dnsless連接。在java中訪問.xlsb文件

import java.sql.DriverManager; 
import java.sql.Connection; 
import java.sql.SQLException; 
public class dummy { 
    public static void main(String[] argv) { 
     System.out.println("-------- Oracle JDBC Connection Testing ------"); 
     try { 
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     } catch (ClassNotFoundException e) { 
      System.out.println("Where is your Oracle JDBC Driver?"); 
      e.printStackTrace(); 
      return; 
     } 
     System.out.println("Oracle JDBC Driver Registered!"); 
     Connection connection = null; 
     try { 
      connection = DriverManager.getConnection(
        "jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=D:/abc.xls;"); 
     } catch (SQLException e) { 
      System.out.println("Connection Failed! Check output console"); 
      e.printStackTrace(); 
      return; 
     } 
     if (connection != null) { 
      System.out.println("You made it, take control your database now!"); 
     } else { 
      System.out.println("Failed to make connection!"); 
     } 
    } 

} 

該程序與以下輸出正常工作。

-------- Oracle JDBC Connection Testing ------ 
Oracle JDBC Driver Registered! 
You made it, take control your database now! 

,但我需要訪問一個.xlsb文件,當我改變

connection = DriverManager 
        .getConnection("jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=D:/abc.xls;"); 

connection = DriverManager 
        .getConnection("jdbc:odbc:Driver={Microsoft Excel Driver (*.xlsb)};DBQ=D:/abc.xlsb;"); 

我越來越有例外,下面的輸出。

-------- Oracle JDBC Connection Testing ------ 
Oracle JDBC Driver Registered! 
Connection Failed! Check output console 
java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified 
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source) 
    at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source) 
    at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source) 
    at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source) 
    at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at dummy.main(dummy.java:19) 

請讓我知道如何解決這個問題,我想用一個dnsless connection。由於我有多個Excel表格可供使用。

而我所有的應用程序都是32位。

感謝

+0

您可以嘗試安裝[Access數據庫引擎](http://www.microsoft.com/en-US/download/details.aspx?id=13255),然後查看是否可以使用Driver = {Microsoft Excel驅動程序(* .xls,* .xlsx,* .xlsm,* .xlsb)}'。 (請注意,您必須以與您的Java應用程序將運行的JVM相同的「bitness」安裝驅動程序:32位或64位。) –

+0

嗨@GordThompson,感謝您嘲笑這些'bitness',錯過了在寫這個問題時,我所有的應用程序都是32位的。更新我的問題:) – user3872094

+0

@GordThompson,只是好奇知道,什麼是這個Access數據庫引擎,當我部署我的應用程序時,我需要它嗎?我也可以使DNS與此連接更少? – user3872094

回答

1

正如其名字所表示的,舊的Excel ODBC驅動程序

Driver={Microsoft Excel Driver (*.xls)}; 

只有.xls文件的工作。

較新的Excel ODBC驅動程序

Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}; 

還與通過Excel的較新版本(2007年以後)使用的Open XML file types。包含較新的Excel驅動程序作爲Access Database Engine安裝的一部分。