Код: Выделить всё
String user = "user";
String pass = "pass";
Connection conn = DriverManager.getConnection(s, user, pass);
conn.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
conn.setAutoCommit(false);
Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
stmt.setFetchSize(50);
stmt.setFetchDirection(ResultSet.FETCH_FORWARD);
ResultSet rs = null;
String sql = "select * from TABLE"; //long lasting select
boolean ok = stmt.execute(sql);
if (ok) {
rs = stmt.getResultSet();
while (rs.next()) {
//do something
}
}
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
< /code>
Я стараюсь достичь того же самого, что и клиент Flamerobin: при загрузке данных данных в таблицу (только когда они нам нужны - прокрутите вниз в таблице). Мы разрабатываем приложение, которое является клиентом двухуровневой системы ERP (DB Server Firebird, клиент на платформе NetBeans). Мы написали некоторые компоненты базы данных, которые заполняют Jxtable данных по тому же принципу, как и компоненты «Interbase/Delphi» в прошлом.
Код выше упрощен; В коде компонента мы загружаем первые 100 строк в модель JTable Table, и когда пользователь прокручивается вниз, мы загружаем еще 100 строк и т. Д. Однако я замечаю, что время загрузки первых 100 строк такое же, как если бы мы загружаем все строки в набор данных. То есть код < /p>
boolean ok = stmt.execute(sql);
if (ok) {
rs = stmt.getResultSet();
int rows = 0;
while (rs.next() rows < 100) {
//do something
rows++;
}
}
< /code>
взял практически в то же время, что и первый кусок исходного кода. Похоже, что команда STMT.Execute (SQL) Подробнее здесь: https://stackoverflow.com/questions/355 ... ng-queries