Я загружаю в таблицу базы данных 8000 записей о пользователях, и я делаю некоторые операции над этими данными, и в конце я хочу получить обратно 8000 записей с балансом. Мой код:ResultSet не возвращает все значения
public void getBalance(String database){
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.getConnection(
"jdbc:oracle:thin:@address","user","password");
stmt=conn.createStatement();
rs=stmt.executeQuery("select count(*) from balance1");
int count=0;
while(rs.next()){
count=rs.getInt(1);
}
System.out.println("The count is "+count);
conn.setAutoCommit(false);
stmt.setFetchSize(count);
rs = stmt.executeQuery("select * from balanceview");
writeToAFile(rs);
}catch(Exception e){
e.printStackTrace();
}finally{
if(conn!=null){
try{
conn.close();
}catch(Exception e){
_logger.severe(e.getMessage());
e.printStackTrace();
}
}if(stmt!=null){
try{
stmt.close();
}catch(Exception e){
_logger.severe(e.getMessage());
e.printStackTrace();
}
}if(rs!=null){
try{
rs.close();
}catch(Exception e){
_logger.severe(e.getMessage());
e.printStackTrace();
}
}
}
}
, но перед лицом проблемы возвращаются только 2000 значений. Есть ли способ вернуть все 8000 значений.
Что такое 'count = rs.getInt (1)' * предполагается * делать? Должно ли это вместо 'count ++'? Я бы также предположил, что 'stmt.setFetchSize (count)' не является невероятной идеей, если у вас нет тонны ОЗУ для этого ... – JonK
Вы выбираете счет из 'balance1', но затем запрашиваете' balanceview' , Это нормально? – Tunaki
Да balance1 - это моя таблица, где хранятся все 8000 клиентов, а balanceview - просто представление, которое содержит простой выбор в таблице balance1. – user3428496