The First while loop iterates through only one record and then the other while loop get iterates through multiple records but first while loop is not getting reference to second record or further. Im using two different resultset object and single statement object am i doing anything wrong pls revert and thanks in advance.
public void generateCsvFile()
{
String vSQL = "";
String mSQL = "";
String mDealer_id = "";
try
{
//mSQL = "mSQL"
mSQL = "select distinct em_controller_id as dealer_id from entity_master";
System.out.println("mSQL :: \n"+mSQL);
rs1 = stmt.executeQuery(mSQL);
while(rs1.next())
{
//System.out.println("@#@# Dealer id @##@#::"+rs1.getString("dealer_id"));
mDealer_id = rs1.getString("dealer_id");
vSQL = "select e.em_entity_id,e.em_name,e.em_address_line_1,e.em_address_line_2,e.em_address_line_3,e.em_phone_no_1,e.em_phone_no_2,e.em_dob,e.em_pan_no,e.em_exch_client_id from entity_master e where e.em_controller_id='"+mDealer_id+"'";
System.out.println("vSQL :: \n"+vSQL);
rs = stmt.executeQuery(vSQL);
FileWriter writer = new FileWriter(mDealer_id+".csv");
while(rs.next())
{
System.out.println("em_entity_id !@!@!('"+mDealer_id+"') :: "+rs.getString("em_entity_id"));
System.out.println("ENTITY :: "+rs.getString("em_entity_id"));
writer.append(rs.getString("em_entity_id"));
writer.append(',');
writer.append(rs.getString("em_name"));
writer.append(',');
writer.append(rs.getString("em_address_line_1"));
writer.append(',');
writer.append(rs.getString("em_address_line_2"));
writer.append(',');
writer.append(rs.getString("em_address_line_3"));
writer.append(',');
writer.append(rs.getString("em_phone_no_1"));
writer.append(',');
writer.append(rs.getString("em_phone_no_2"));
writer.append(',');
writer.append(rs.getString("em_dob"));
writer.append(',');
writer.append(rs.getString("em_pan_no"));
writer.append(',');
writer.append(rs.getString("em_exch_client_id"));
writer.append('\n');
}
rs.close();
// //generate whatever data you want
writer.flush();
writer.close();
}
rs1.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
I suspect this is the problem:
It looks like you’re using the same
Statementfor two concurrent queries. I’m not really surprised that that’s failed. Use two separateStatementvariables – ideally, ones declared within your method. Also:finallyblocks, so that you still close them even if an exception is thrown.You should use parameterized SQL rather than code like this: