java - 如何在java中将两个不同的excel文件连接为同一服务器上的数据库?

标签 java excel

我有两个 Excel 数据库,使用两个不同的连接变量 con1 和 con2 连接。我想通过匹配两个数据库中的列来从第二个数据库中检索数据。我如何在 java 中执行此操作?我已经尝试了很多。当我运行此代码时,我收到 NullPointerException。

try
{
    sql10 = "select [Data$].Species,[Plot$].District,[Plot$].State from [Plot$],[Data$] where [Data$].Plot_ID = ? ";
    pst10=con.prepareStatement(sql10);
    pst10.setString(1, tmp1);
    rs14=pst10.executeQuery();

    while(rs14.next())
    {
        String st=rs14.getString("State");
        String dis=rs14.getString("District");
        String sp=rs14.getString("Species");
        System.out.println(sp);
        sql11="select * from [database$] where State = st  and District = dis and Species = sp";
        pst11=con1.prepareStatement(sql11); 
        pst11.setString(1, tmp1);
        rs15=pst11.executeQuery();

        while(rs15.next())
        {
            System.out.println(rs15.getString("Local_equation"));
        }
    }

堆栈跟踪是:

java.lang.NullPointerException
    at sun.jdbc.odbc.JdbcOdbcPreparedStatement.clearParameter(JdbcOdbcPreparedStatement.java:1022)
    at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setChar(JdbcOdbcPreparedStatement.java:3056)
    at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setString(JdbcOdbcPreparedStatement.java:765)
    at biomasscal.GLA14.buttonCALCULATEActionPerformed(GLA14.java:599)
    at biomasscal.GLA14.access$400(GLA14.java:60)
    at biomasscal.GLA14$5.actionPerformed(GLA14.java:279)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6504)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6269)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4860)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4686)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2713)
    at java.awt.Component.dispatchEvent(Component.java:4686)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
    at java.awt.EventQueue.access$000(EventQueue.java:101)
    at java.awt.EventQueue$3.run(EventQueue.java:666)
    at java.awt.EventQueue$3.run(EventQueue.java:664)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:680)
    at java.awt.EventQueue$4.run(EventQueue.java:678)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

最佳答案

当您查询第二个 Excel 数据库时,您需要将第一个查询中的变量作为参数传递(就像您之前所做的那样):

 sql11="select * from [database$] where State = ? and District = ? and Species = ?";
     pst11=con1.prepareStatement(sql11); 
     pst11.setString(1, st);
     pst11.setString(2, dis);
     pst11.setString(3, sp);
     rs15=pst11.executeQuery();

但是,如果没有看到完整的堆栈跟踪,我无法确定。

关于java - 如何在java中将两个不同的excel文件连接为同一服务器上的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29416079/

相关文章:

java - 引用声明接口(interface)时方法引用无效

java - JDBC连接池设计

excel - 无法运行宏...该宏在此工作簿中可能不可用

excel - 我可以在 VBA 中使用 DPAPI(或类似的东西)吗?

vba - 在 Excel VBA 中调用没有管理权限的 COM 互操作 regasm

java - 如何从数组 int 列表中删除最后一个逗号

java - 在Java中不反射地查找包内的所有类

java com.mongodb.DBCollection 创建后台索引

vba - 获取文件上次修改日期(资源管理器值而不是cmd值)

excel - 将匹配值列表放入单个单元格中