我想在结果集中追加两个表的数据。 我已经尝试了下面的代码,但没有得到所需的输出只有第一个结果集数据,即第一个表数据
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 :(得分:4)
在使用相同的连接执行新查询之前,您应该从每个ResultSet
中提取所有数据。
在幕后,ResultSet
对象正在使用连接/语句来从数据库中提取数据。使用该连接执行新查询时,现有查询信息将被删除。
因此,您应该遍历每个ResultSet
并在执行下一个查询之前将数据(最有可能)拉到自定义对象中。
答案 1 :(得分: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();