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 请指导我。

4

2 回答 2

4

ResultSet在使用相同的连接执行新查询之前,您应该从每个中提取所有数据。

在幕后,该ResultSet对象正在使用连接/语句来从数据库中提取数据。当您使用该连接执行新查询时,现有查询信息将被丢弃。

因此,在执行下一个查询之前,您应该遍历每个ResultSet并拉取数据(很可能是到自定义对象中)。

于 2012-06-11T11:57:51.307 回答
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();
于 2012-06-12T04:15:47.027 回答