2016-07-27 111 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%的性能。