2016-07-27 106 views
1

我寫了一個代碼,它將使用odbc橋來查詢Excel中的數據。現在在java8中沒有更多的支持odbc,我正在尋找一個相同的替代方案。我有近32種不同的實用程序。即從Excel數據庫查詢。以下是一個示例程序。使用JDBC連接到Excel 8

private void getTheDetailedDataForRca(String userName, XSSFWorkbook workbook, XSSFSheet sheet) { 
     // System.out.println("ph2"); 
     try { 
      DecimalFormat df2 = new DecimalFormat("#.##"); 
      HashMap<String, HashMap<String, Double>> myArray; 
      myArray = new HashMap<String, HashMap<String, Double>>(); 
      String user = "%" + userName + "%"; 

      String dburl = path.getDBUrl(); 

      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      myConn = DriverManager.getConnection(dburl); 
      String queryString = "select Error As Err, Sum(TotalErrors) as Errors from [Quality Sheet$] where Associate like ? group By Error"; 
      PreparedStatement ps = myConn.prepareStatement(queryString); 
      ps.setString(1, user); 
      ResultSet rs = ps.executeQuery(); 
      myArray.put(userName, new HashMap<String, Double>()); 

      while (rs.next()) { 
       double inputValue = rs.getDouble("Errors"); 
       String fin = df2.format(inputValue); 
       myArray.get(userName).put(rs.getString("Err"), Double.parseDouble(fin)); 
      } 
      ps.close(); 
      myConn.close(); 
      printMapOne(myArray, userName, workbook, sheet); 
     } catch (Exception e) { 
      System.out.println(e + "\t" + "in finals sheet B2"); 
     } 
    } 

而且我dburl是

public String getDBUrl() { 
    return "jdbc:odbc:Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=C:\\Users\\" + getSystemId 
      + "\\Desktop\\Quality Sheets\\quality_template.xlsx;"; 
} 

我在網上查這讓我吃驚,我發現沒有什麼除了建議使用POI。我試過UCanAccess,但這隻支持Access數據庫。有人可以讓我知道任何替代odbc,所以我不需要編碼整個事情。

我試過在Removal of JDBC ODBC bridge in java 8

給出的解決方案,我在cmd中得到的消息如下。

C:\Users\u0138039\Desktop\sun>jar -cvf jdbc.jar sun 
sun : no such file or directory 
added manifest 

但是在文件夾中創建了一個jar文件。

我貼上相同的JDBC驅動程序C:\Program Files (x86)\Java\jdk1.8.0_101\jre\lib,並複製到jdbcodbc.dllC:\Program Files (x86)\Java\jre1.8.0_101\bin,重新啓動,並讓我吃驚,我得到了相同的java.sql.SQLException: No suitable driver found for jdbc:odbc例外。這裏

感謝

+0

查看答案解釋[如何啓用JDBC-ODBC橋爲JDK 8](http://stackoverflow.com/a/36875001/5221149) – Andreas

+0

嗨@Andreas,我試過這個,但不幸的是,這不會發生作用。你可以取下重複的標誌,我搜索了這個,然後我發佈了這個問題,因爲我沒有找到任何其他選項:-(。 – user2423959

+0

@Andreas,當我運行命令時,我收到了這條消息' C:\ Users \ u0138039 \ Desktop \ sun> jar -cvf jdbc.jar sun sun:沒有這樣的文件或目錄 增加了manifest'。你能澄清這是否導致錯誤嗎? – user2423959

回答

0

progress.com/jdbc/sequelink是多了一個,如果有人還在尋找一個值得信賴的JDBC ODBC橋。這個博客談論他們的橋如何能夠提高310%的性能。