Я пытаюсь использовать два цикла while в одной программе для итерации двух запросов, но сначала, пока цикл не выполняется

public class JustTest { public static void main(String[] args) { //Blank workbook XSSFWorkbook workbook = new XSSFWorkbook(); String url =""; String username =""; String password =""; try { Class.forName("oracle.jdbc.driver.OracleDriver"); Connection c = DriverManager.getConnection(url,username,password); c.setAutoCommit(false); System.out.println("Opened database successfully"); //Create a blank sheet XSSFSheet sheet = workbook.createSheet("total"); Row headerRow = sheet.createRow(0); Cell date = headerRow.createCell(0); date.setCellValue("date"); Cell byDate = headerRow.createCell(1); byDate.setCellValue("total au"); Cell byDate1 = headerRow.createCell(1); byDate1.setCellValue("total au_dt"); Statement stmt = c.createStatement();
//passing two queries rs and rs1 ResultSet rs = stmt.executeQuery("select empname,empno from emp"); ResultSet rs1=stmt.executeQuery("select deptno,deptname from dept"); int row = 1;
//first query iterate while(rs.next()) { String empname= rs.getString("empname"); int empno = rs.getInt("empno "); Row dataRow = sheet.createRow(row); Cell dataNameCell = dataRow.createCell(0); dataNameCell.setCellValue(dateValue); Cell dataAddressCell = dataRow.createCell(1); dataAddressCell.setCellValue(empno ); row = row + 1; }
//second query iterate while(rs1.next()) { String deptno=rs1.getString("deptno"); String deptname =rs1.getString("deptname "); Row dataRow = sheet.createRow(row1); Cell dataNameCell1 = dataRow.createCell(2); dataNameCell1.setCellValue(deptno); Cell dataNameCell2 = dataRow.createCell(3); dataNameCell2.setCellValue(deptname ); row1 = row1 + 1; } } catch ( NullPointerException e ) { System.out.println( " is not updated because cells cannot be left null/empty "); } catch ( Exception e ) { System.err.println( e.getClass().getName()+": "+ e.getMessage() ); System.exit(0); } try { //Write the workbook in file system FileOutputStream out = new FileOutputStream(new File("C:\\Users\\jit\\Desktop\\allSheets\\justtest.xlsx")); workbook.write(out); out.close(); System.out.println("sheet.xlsx written successfully on disk."); } catch (Exception e) { e.printStackTrace(); } } } java jdbc jdbc-odbc

есть два запроса, и я пытаюсь выполнить итерацию запросов, используя два цикла while, но для меня я всегда извлекаю данные второго цикла из db..where, поскольку первый цикл не выполняется, поэтому данные не сохраняются для первого цикла. (сохранение данных на листе excel). Любой может отредактировать код, чтобы данные могли храниться для обоих циклов.

1 ответ

Перенесите свой второй executeQuery после обработки первого цикла while. Возможно, вы переписываете

ResultSet rs = stmt.executeQuery("select empname,empno from emp"); int row = 1; //first query iterate while(rs.next()) { String empname= rs.getString("empname"); int empno = rs.getInt("empno "); Row dataRow = sheet.createRow(row); Cell dataNameCell = dataRow.createCell(0); dataNameCell.setCellValue(dateValue); Cell dataAddressCell = dataRow.createCell(1); dataAddressCell.setCellValue(empno ); row = row + 1; } ResultSet rs1=stmt.executeQuery("select deptno,deptname from dept");

licensed under cc by-sa 3.0 with attribution.