2012-06-11 30 views
0

我想追加結果集中兩個表的數據。 我曾嘗試下面的代碼,但沒有得到期望的輸出只有第一個結果集數據,即第一表數據如何在結果集中追加數據?

ResultSet rs=null; 
      String sql_query="select * from exception_main;select * from m_roles" 
      String query1=sql_query.toUpperCase(); 
         String[] results=query1.split(";"); 
       for(int i=0;i<results.length;i++) 
        { 
         if(results[i].startsWith("SELECT")) 
         { 
          System.out.println("Inside select"+ results[i]); 
         ps = conn1.prepareStatement(results[i].toString()); 
         rs = ps.executeQuery(); 

    ... 
        //writing to csv file 
        CSVWriter writer = new CSVWriter(new FileWriter(csv_file_path + csv_file_name), ',',CSVWriter.NO_QUOTE_CHARACTER); 
        System.out.println("Count..." + rs.getRow()); 
        writer.writeAll(rs, true); 
        System.out.println("Count...2::::" + rs.getRow()); 
        writer.close(); 
        while(rs.next()){ 

          rs.deleteRow(); 

          } 
        System.out.println("Count...3:::::::" + rs1.getRow()); 
} 
} 

我在這三個地方獲得計數爲0 指引我請。

+0

什麼是您的代碼生成的錯誤 – shareef

+0

如果兩個表的結構相同,您可以嘗試聯合。 –

+0

這兩個表的結構是不同的,我得到java.lang.NullPointerException – happy

回答

0

在for循環之前打開文件,之後關閉它,而不是每次循環打開和關閉它。

ResultSet rs=null; 
       String sql_query="select * from exception_main;select * from m_roles" 
       String query1=sql_query.toUpperCase(); 
          String[] results=query1.split(";"); 
     CSVWriter writer = new CSVWriter(new FileWriter(csv_file_path + csv_file_name), ',',CSVWriter.NO_QUOTE_CHARACTER); 
        for(int i=0;i<results.length;i++) 
         { 
          if(results[i].startsWith("SELECT")) 
          { 
           System.out.println("Inside select"+ results[i]); 
          ps = conn1.prepareStatement(results[i].toString()); 
          rs = ps.executeQuery(); 




     ... 
         //writing to csv file 

         System.out.println("Count..." + rs.getRow()); 
         writer.writeAll(rs, true); 
         System.out.println("Count...2::::" + rs.getRow()); 
              while(rs.next()){ 

           rs.deleteRow(); 

           } 
         System.out.println("Count...3:::::::" + rs1.getRow()); 
    } 
    } 
    writer.close(); 
4

在使用相同連接執行新查詢之前,您應該從每個ResultSet中提取所有數據。

在封面下,ResultSet對象正在使用連接/語句來從db中獲取數據。當您使用該連接執行新的查詢時,現有的查詢信息將被丟棄。

因此,在執行下一個查詢之前,您應該遍歷每個ResultSet並將數據(很可能是拉到數據庫中的自定義對象)。

+0

我正在寫結果集數據到CSV文件,然後再執行下一個查詢。 – happy