0

結果セットに 2 つのテーブルのデータを追加したいと考えています。以下のコードを試しましたが、最初の結果セットデータ、つまり最初のテーブルデータのみで目的の出力が得られませんでした

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

3 つの場所すべてでカウントが 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 に答える