#java #sql
#java #sql
Вопрос:
Я работаю на Java. У меня есть одна таблица, в которой 100 строк и 2 столбца. Рассмотрим следующий запрос:-
String id, lastId;
ArrayList list=new ArrayList();
String query="select id from user limit 0,9";
selectStatement.execute(query);
ResultSet rs=selectStatement.getResultSet();
while(rs.next()){
id=rs.getString(1);
list.add(id);
}
Как и выше, я указал ограничение в 10. Но я хочу получить все 100 строк.Итак, пожалуйста, скажите мне, как начать с 10-й строки после перебора 9 строк.Нужно ли устанавливать id в lastID.Пожалуйста, дайте мне какой-нибудь простой код.
Комментарии:
1. Вы используете
MySQL
, верно?
Ответ №1:
Вы указали предел 9
, а не 10
.
Для извлечения записей с 11-го по 20-е используйте:
SELECT id
FROM user
ORDER BY
id
LIMIT 10, 10
затем
SELECT id
FROM user
ORDER BY
id
LIMIT 20, 10
и так далее.
Обратите внимание, что вы должны указать ORDER BY
, чтобы порядок ваших записей был согласованным.
Ответ №2:
Похоже, вы пытаетесь реализовать подкачку. Вы смотрели на поддержку подкачки, доступную в CachedRowSet? (Смотрите раздел 10, Данные подкачки).
Этот пример кода взят из этого javadoc:
CachedRowSet crs = CachedRowSetImpl();
crs.setPageSize(100);
crs.execute(conHandle);
while(crs.next() {
. . . // operate on first chunk of 100 rows in crs, row by row
}
while(crs.nextPage()) {
while(crs.next()) {
. . . // operate on the subsequent chunks (of 100 rows each) in crs,
// row by row
}
}
Ответ №3:
Сначала получите количество строк из MySQL
String query = "SELECT COUNT(*) FROM user";
int count;
selectStatement.execute(query);
ResultSet rs=selectStatement.getResultSet();
while(rs.next()){
count=rs.getInt(1);
}
Затем выполните итерацию по циклу.
String id, int counter =1;
ArrayList list=new ArrayList();
for(int i=1; i< count/10;i )
{
query="select id from user limit " i-1 ", " (i *10)-1 ;
selectStatement.execute(query);
ResultSet rs=selectStatement.getResultSet();
while(rs.next()){
id=rs.getString(1);
list.add(id);
}
}
Поскольку ваш код написан на Java, может возникнуть синтаксическая ошибка. Пожалуйста, исправьте их 🙂
Ответ №4:
String query="select id from user limit 0,9";
String query="select id from user limit" start "," end;
Здесь вы жестко запрограммировали смещение,limit. Вместо этого используйте такие переменные, как start, end, data_limit (10 в соответствии с примером). ‘start’ должен быть начальным индексом. ‘end’ должно быть (‘start’ data_limit).