使用jdbc访问excel作为数据库

时间:2014-01-31 11:02:31

标签: java excel jdbc

我必须设计一个用于访问excel应用程序作为数据库的应用程序。我的问题是我必须为每个事务创建多个连接,如果我错过任何关闭它,excel不会更新。

我想设计模式,我可以访问excel。任何人帮助我设计一个我不会遇到问题的共同模式。我想要this之类的东西,但是我们无法使用它来访问excel。

提前致谢!

我在实用程序类中有这个方法

static ResultSet  getExcelData(String filePath,String sqlQuery){
    ResultSet rs=null;


    try{
        conn    = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ="+filePath+";READONLY=false");
        stmt=    conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
        rs=stmt.executeQuery( sqlQuery ); 
    }catch (Exception e) {
        e.printStackTrace();
        return null;
        // TODO: handle exception
    }finally{


    }
    return rs;

}

我这样称呼它

ResultSet rs=JdbcUtil.getExcelData("D:\\AB_demo\\AB_demo\\test.xls", "Select max(int(ID)) from [MAIN$] where HEADER_IND is not Null AND int(ID)<"+excelId);
        int databaseId = 0;
        if(rs.next())
        {
            databaseId=rs.getInt(1);    
        }


        ResultSet rs1=JdbcUtil.getExcelData("D:\\AB_demo\\AB_demo\\test.xls", "SELECT * from [MAIN$]  where   id= '"+databaseId+"'or id='"+excelId+"'");

我正在调用此方法两次,然后使用

更新excel文件
stmt.executeUpdate(sql);

它返回整数1,但它没有反映在excel中。当我使用进程资源管理器时,文件仍然在使用。我需要一个设计模式或来代码来克服他的问题。

1 个答案:

答案 0 :(得分:1)

我认为更正确的方法是从数据库生成Excel文件。否则,您必须创建服务器端以确保事务和连接控制。 您的任务的主要问题 - Excel是

  1. 不是数据库
  2. 不是网络数据库 换句话说,你必须使用其他工具,其他方法来完成你的任务。