2015-04-02 3 views
0

У меня есть две базы данных excel, подключенные с использованием двух разных переменных соединения con1 и con2.I хочу получить данные из моей второй базы данных, сопоставляя столбцы в обеих базах данных. Как я могу это сделать в java? Я пробовал это много. Когда я запускаю этот код, я получаю исключение NullPointerException.Как подключить два разных файла excel в качестве баз данных на одном сервере в java?

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) 
+0

@ LiamWilson94-Спасибо за вашу помощь.Танку так много. Это сработало. –

ответ

1

Когда вы опрашивать вторую базу данных первенствовать вам необходимо передать переменные из первого запроса в качестве параметров (как вы делали ранее):

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(); 

Однако, не увидев полную трассировку стека, я не могу быть уверен.

+0

@ LiamWilson94. Этот запрос на двух наборах результатов отображает значения, соответствующие друг другу. Теперь, если я хочу отображать значения, которые не соответствуют друг другу, какой запрос я должен использовать? Например, если я хочу отобразить значение видов, то что мне делать? Можете ли вы, пожалуйста, помочь мне? –

Смежные вопросы