|
|
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
Как грамотно определить количество строк в полученном ResultSet? В книге "Сервлеты и JavaServer Pages" написано: "Единственный способ определения количества строк - постоянное повторение вызова метода next объекта ResultSet, пока он не возвратит значение false". Неужели только так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2004, 11:29 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
GMaxКак грамотно определить количество строк в полученном ResultSet? В книге "Сервлеты и JavaServer Pages" написано: "Единственный способ определения количества строк - постоянное повторение вызова метода next объекта ResultSet, пока он не возвратит значение false". Неужели только так? ResultSet rs = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY).executeQuery(qry); rs.last(); int resulSetSize = rs.getRow(); rs.beforeFirst(); или выполнить select count(*) from table1 where a > 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2004, 11:34 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
Исчерпывающе! Пасиба. Значит книги врут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2004, 11:42 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
Две копейки: столкнулся с тем, что Oracle 9i JDBC Driver позволяет получать ResultSet.TYPE_SCROLL_SENSITIVE только для ResultSet'ов, полученных через выполнение select'а, но не как refcursor, из процедуры, к примеру. Такое вот ограничение.. В Oracle 10g JDBC уже работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2004, 12:46 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
В книге навверное подразумевался JDBC 1.0, т.к. в этой версии можно по Resultset пройти только один раз в одном направлении А способ предложенный А.Грасоff™ будет работать только начиная с JDBC 2.0 Так что не надо на книжки гнать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2004, 13:31 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
SmaLLВ книге навверное подразумевался JDBC 1.0, т.к. в этой версии можно по Resultset пройти только один раз в одном направлении А способ предложенный А.Грасоff™ будет работать только начиная с JDBC 2.0 Так что не надо на книжки гнать Ну зачем же сразу так грубо? Может быть и 1.0, правда ссылки на версию в книге я не нашел. Кстати книга была написана в 2000 году, а JDBC 2.0 появился еще в 1998 если не ошибаюсь. Но в 2000 точно был. Так что вот... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2004, 14:07 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™ GMaxКак грамотно определить количество строк в полученном ResultSet? В книге "Сервлеты и JavaServer Pages" написано: "Единственный способ определения количества строк - постоянное повторение вызова метода next объекта ResultSet, пока он не возвратит значение false". Неужели только так? ResultSet rs = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY).executeQuery(qry); rs.last(); int resulSetSize = rs.getRow(); rs.beforeFirst(); Ну ты научишь, Граспых. Память-то не резиновая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2004, 23:13 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
чего-то не получилось у меня получить OutOfMemory на [select * from table]. в table - 13796090 строк. сервер БД - Microsoft SQL 2000 драйвер на клиенте - JNetDirect 3.3 клиентский комп - PIV/2GHz, 512MB, Windows 2000 Prof. серверный комп - 2 x PIII/1.3GHz, 1GB, Windows 2000 Prof. на клиенте память при выполнении java-теста, аналогичному привиденным, выросла на 6MB, сервер тоже не особо напрягался. -- FUCK THE iNET!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2004, 12:18 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™чего-то не получилось у меня получить OutOfMemory на [select * from table]. в table - 13796090 строк. сервер БД - Microsoft SQL 2000 драйвер на клиенте - JNetDirect 3.3 клиентский комп - PIV/2GHz, 512MB, Windows 2000 Prof. серверный комп - 2 x PIII/1.3GHz, 1GB, Windows 2000 Prof. на клиенте память при выполнении java-теста, аналогичному привиденным, выросла на 6MB, сервер тоже не особо напрягался. -- FUCK THE iNET!!! где-та я видел про ето (оракловый драйвер) топик, тока найти не могу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2004, 12:26 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
zalexakaгде-та я видел про ето (оракловый драйвер) топик, тока найти не могу это? http://www.sql.ru/forum/actualthread.aspx?tid=32346 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2004, 12:30 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™ zalexakaгде-та я видел про ето (оракловый драйвер) топик, тока найти не могу это? http://www.sql.ru/forum/actualthread.aspx?tid=32346 ниа не то, нимагу вспомнить словов для поиска зы кстати ты там тоже участвовал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2004, 12:35 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2004, 12:39 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
Курсор Oracle обеспечивает последовательный доступ только в одном направлении (несмотря на скроллируемость резервного набора). Поэтоу предложенный метод пройти до конца, а потом вернуться в начало приведет только к повторному выполнению запроса и перебору всех строк, но скрытым образом. То есть сначала все строки извлекаются на клиента, а потом выполняется повторно запрос и в полученном НОВОМ наборе курсор устанавливается в начало. Если уж так хочется узнать количество строк, перед основным запросом выполни SELECT COUNT(*) FROM ... WHERE "условие" где "условие" точно такое как в основном запросе. Все таки будет меньший напряг для системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2004, 14:04 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
MBasilКурсор Oracle обеспечивает последовательный доступ только в одном направлении (несмотря на скроллируемость резервного набора). Поэтоу предложенный метод пройти до конца, а потом вернуться в начало приведет только к повторному выполнению запроса и перебору всех строк, но скрытым образом. То есть сначала все строки извлекаются на клиента, а потом выполняется повторно запрос и в полученном НОВОМ наборе курсор устанавливается в начало.Это ты сам придумал? Или это где-то написано? Как объяснишь вот это: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2004, 14:45 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
2 stdio а версия thin драйвера у вас какая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2004, 14:54 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
zalexaka2 stdio а версия thin драйвера у вас какая?9.0.1.5.0 На других версиях, думаю, поведение будет точно таким же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2004, 15:14 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
zalexaka2 stdio а версия thin драйвера у вас какая?а еще у него пентиум один с 32 мб озу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2004, 15:14 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
to stdio Ну, и как это противоречит тому, что я написал ? Когда ты вызвал execute(), выполнился парсинг SQL и было произведено его выполнение. Указатель курсора установлен на начало для выборки. Когда ты вызвал rs.last() все строчки должны быть "профетчены" на клиента, что естественно потребовало массу работы. В чем ошибочность моих слов ? Проблема этого дела в том, что не пройдя весь курсор с фетчем до конца ты не узнаешь, сколько возвращено строк. Это принципиальный вопрос, так как узнать количество строк в Oracle можно только перебрав их все. Вернуться в начало - значит повторно выполнить запрос. Чем тебе не нравиться COUNT(*). Запрос, конечно все равно выполняется, но хоть фетч уменьщается до одной строки. И дело тут не в версии драйвера, а в механизме работы курсора Oracle. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2004, 15:52 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
MBasilto stdio Ну, и как это противоречит тому, что я написал ? Когда ты вызвал execute(), выполнился парсинг SQL и было произведено его выполнение. Указатель курсора установлен на начало для выборки. Когда ты вызвал rs.last() все строчки должны быть "профетчены" на клиента, что естественно потребовало массу работы. В чем ошибочность моих слов ? Проблема этого дела в том, что не пройдя весь курсор с фетчем до конца ты не узнаешь, сколько возвращено строк. Это принципиальный вопрос, так как узнать количество строк в Oracle можно только перебрав их все. Вернуться в начало - значит повторно выполнить запрос. Чем тебе не нравиться COUNT(*). Запрос, конечно все равно выполняется, но хоть фетч уменьщается до одной строки. И дело тут не в версии драйвера, а в механизме работы курсора Oracle.противоречит тем, что ты рассказываешь про то как работает драйвер, как ты думаешь, а не так как Oracle это делает на самом деле . А на деле он просто скачивает всё в память на клиента и там уж создаёт иллюзию обратно крутимого курсора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2004, 16:52 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
Уел ! Ну да, я не обратил внимания на то, что у тебя в примере результирующий набор TYPE_SCROLL_INSENSITIVE. И в этом моя ошибка. Однако при чувствительном к изменениям наборе запрос все-равно будет выполняться повторно. С другой стороны большой, наверное, кайф выбрать тысячи строк на клиента только для того, чтобы выяснить сколько строк на самом деле будет выбрано. Таким образом задача stdio видимо состояла не в том, чтобы ответить на вопрос, как без выполнения операции фетч выяснить - сколько строк вернет запрос, а в том чтобы уличить меня в ошибке. Ты победил ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2004, 17:20 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
MBasilТаким образом задача stdio видимо состояла не в том, чтобы ответить на вопрос, как без выполнения операции фетч выяснить - сколько строк вернет запрос, а в том чтобы уличить меня в ошибке.Нет. Я просто хотел показать, что лучше один раз провести эксперимент, чем строить гипотезы. Даже если будет SENSITIVE, то совсем не очевидно, что будет перезапускаться весь запрос целиком. Не будет вылняться select * from (...) where rowid = ... ? А? А под хранение значений "предыдущих" rowid всё равно память нужна => всегда я найду такую таблицу, на которой оперативной памяти не хватит. _________________ Умерщвление прекрасной гипотезы мерзким фактом являет собой величайшую трагедию науки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2004, 18:25 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
Полагаю, что при перезапросах ROWID использоваться не будет, так он неизвестен для вставленных после первого запроса строк. Поэтому Вашу замечательную сентенцию по поводу красивой гипотезы возвращаю Вам обратно. Извините за назойливость. Маленькое дополнение У меня есть небольшая универсальная программа по выполнению запросов и выводу результатов написанная на Java. В ней запрос (Oracle 10g ) SELECT * FROM dba_objects; возвратил строк : 48259 За время : 12344 м-сек. Запрос SELECT COUNT(*) FROM dba_objects; возвратил строк : 1 За время : 203 м-сек. Правда это с учетом вывода на экран. Однако, согласитесь, разница во времени существенная. Поскольку я принципиально не использую чувствительных к скроллированию курсоров, потребность в памяти при десятках подряд выполняемых запросов составляет 12М и не больше. Что касается скроллируемых наборов, то предпочитаю собственного изготовления RowSet с кэшированием строк в базе, расположенной на сервере приложений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2004, 18:35 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
MBasilПолагаю, что при перезапросах ROWID использоваться не будет, так он неизвестен для вставленных после первого запроса строк. Поэтому Вашу замечательную сентенцию по поводу красивой гипотезы возвращаю Вам обратно."To support updatability and change sensitibility, Oracle JDBC drivers cache the ROWID along with each row". (взято из читаемого курса по "Oracle9i: Access the Database with Java and JDBC"). Проверять - проверял до курса. MBasilИзвините за назойливость. Маленькое дополнение У меня есть небольшая универсальная программа по выполнению запросов и выводу результатов написанная на Java. В ней запрос (Oracle 10g ) SELECT * FROM dba_objects; возвратил строк : 48259 За время : 12344 м-сек. Запрос SELECT COUNT(*) FROM dba_objects; возвратил строк : 1 За время : 203 м-сек. Правда это с учетом вывода на экран. Однако, согласитесь, разница во времени существенная. Поскольку я принципиально не использую чувствительных к скроллированию курсоров, потребность в памяти при десятках подряд выполняемых запросов составляет 12М и не больше. Что касается скроллируемых наборов, то предпочитаю собственного изготовления RowSet с кэшированием строк в базе, расположенной на сервере приложений.Ах, ну всё про баню. Я где-то утверждал, что надо пересчитывать строки на клиенте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 09:48 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
Господа, обращаю ваше внимание на некоторые дополнительные аспекты. 1. То, что для изменения строки, еще в момент выполнения операции POST и в момент ее блокирования необходимо кэширование ROWID, это несомненно, как несомненно и то, что драйвер обязан это делать. 2. Однако, рассмотрим следующую ситуацию. Пользователь работает с последними строками резервного набора, а в это время администратор удаляет одну из первых строк и вставляет ее вновь. При этом он еще вставляет десяток строк (одна из них может получить то же самое ROWID). Можете ли Вы гарантировать, что по ROWID будет получена та же строка, когда пользователь вернется в начало набора ? Фиксация ROWID ведь гарантирована только при блокировании строки. Представьте себе - пользователь проскроллировал набор в начало увидел на месте старой строки нечто совершенно неожиданное, так как ROWID старой строки получила другая. 3. Ситуация практически та же, но запрос обращается к секционированной таблице, а администратор выполняет операции MERGE PARTITION или SPLIT PARTITION. Можно было бы привести и другие примеры, но думаю и этого достаточно. 4. Откровенно говоря менторский тон stdio мне надоел, и с Вашего разрешения, я в дискуссию по этому топику больше вмешиваться не буду. Пусть последнее слово останется за ним. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 15:01 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
MBasilГоспода, обращаю ваше внимание на некоторые дополнительные аспекты.Типа, пусть мировое сообщество нас рассудит? MBasil1. То, что для изменения строки, еще в момент выполнения операции POST и в момент ее блокирования необходимо кэширование ROWID, это несомненно, как несомненно и то, что драйвер обязан это делать.До этого Вы выдвигали совсем другую гипотезу. http://www.sql.ru/forum/actualpost.aspx?bid=38&tid=141321&mid=1149935&p=1&act=quot#1146913 MBasil2. Однако, рассмотрим следующую ситуацию. Пользователь работает с последними строками резервного набора, а в это время администратор удаляет одну из первых строк и вставляет ее вновь. При этом он еще вставляет десяток строк (одна из них может получить то же самое ROWID). Можете ли Вы гарантировать, что по ROWID будет получена та же строка, когда пользователь вернется в начало набора ? Фиксация ROWID ведь гарантирована только при блокировании строки. Представьте себе - пользователь проскроллировал набор в начало увидел на месте старой строки нечто совершенно неожиданное, так как ROWID старой строки получила другая. 3. Ситуация практически та же, но запрос обращается к секционированной таблице, а администратор выполняет операции MERGE PARTITION или SPLIT PARTITION. Можно было бы привести и другие примеры, но думаю и этого достаточно.Выводы где? Смотрим в документацию и видим: http://download-west.oracle.com/docs/cd/B10501_01/java.920/a96654/resltset.htm#1020090 Повторюсь "Умерщвление прекрасной гипотезы мерзким фактом являет собой величайшую трагедию науки" MBasil4. Откровенно говоря менторский тон stdio мне надоел, и с Вашего разрешения, я в дискуссию по этому топику больше вмешиваться не буду. Пусть последнее слово останется за ним.И пусть ему будет стыдно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 15:41 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
Привет 2 MBasil "Менторский" - наставнический, поучающий (словарь Ожегова) stdio знает предмет, рыл в этом направлении, курсы читает (таки да - ментор) ... Разве были личные наезды? Мне показалось, что stdio хотел Вас подтолкнуть в сторону более рационального подхода - если уж строить гипотезы, то надо бы их проверять. А лучше осознать концепции - тогда неадекватные гипотезы не будут рождаться. Всего -- Andrei Kriushin (Oracle8/8i/9i OCP DBA), RDTEX J.S.C. Disclaimer: Opinions are of my own and not necessar(-il)y... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 17:35 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
to Ааз Не хотелось к этому неприятному разговору обращаться вновь, но раз затронули... приведу мое личное мнение о данном топике. 1. stdio, конечно подправил мое личное представление о резервном наборе драйвера Oracle. Будь это сделано доброжелательно, как обычно бывает в разговоре коллег, я бы сказал ему спасибо. Однако его задачей являлось не обсуждение поставленного вопроса (по этому вопросу он отправил меня в баню), он вовсе не желал доброжелательно подсказать мне, что я не прав, а хотел показать - как он умен (стандартный ввод/вывод : не больше и не меньше), а это знаете ли раздражает. Не думайте, что я настолько глуп, чтобы не уловить подтекст. 2. stdio даже не попытался резюмировать итоги "дискуссии", он просто откровенно посмеивался над человеком, которого вовсе не знает, причем кое-где с использованием откровенного передергивания (если Вы внимательно читали топик). А ведь итоги дискуссии интересны сами по себе ! - Скроллируемый резервный набор переправляется целиком на клиентскую машину или на сервер приложений, что допустимо лишь при заведомо небольших объемах данных. Причем разработчик не может этот аспект явно контролировать. - Обновляемый и скроллируемый резервный набор выполняет таки повторные запросы. Кстати в топике я не мог отрицать, что ROWID извлекается, так как об этом явно имеется слайд в курсе. Я лишь отрицал (как выяснилось напрасно), что повторные запросы базируются на ROWID. Базирование на ROWID, казалось дает в этом смысле преимущества, однако может приводить к появлению коллизий, тем более что скроллируемый резервный набор имеет массу и других ограничений. Возможно из-за неудовлетворенности положением дел и появилась концепция RowSet, решение которой фирмой Sun в ее интерфейсах, на мой взгляд, также далеко от совершенства. 3. Интуитивно ощущая недоверие к этому решению, я никогда не использовал скроллируемый резервный набор и данная дискуссия имеет следствием не только раздражение и неприятный осадок, но также дополнительное убеждение в том, что пока использовать его не стоит. 4. Являясь преподавателем с двадцатилетним стажем и зная, что эффект желания поучать является профессиональной болезнью, стараюсь всячески избегать этого порока. Более того, стараюсь без обид признавать ошибки и принимаю с благодарностью помощь в искоренении ошибок от кого бы то ни было. Горжусь тем, что будучи в свое время, начальником отдела на заводе не боялся просить у рабочих помощи, когда чего-то не знал. Общение с stdio для меня - еще один урок в том смысле, что я ни при каких не должен поступать подобным образом. 4. И если уж на то дошло дело до ссылок на регалии - к.т.н, доцент, (Oracle8/8i/9i OCP DBA), (Oracle8/8i/9i OCP Developer), Sun certified Java programmer. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2004, 15:56 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
Как определить ко-во строк в выполненом запросе? Код: plaintext 1. 2. row=0. Но это не верно так как запрос я паралельно выполнила в навигаторе и там точно есть строки. Что не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 11:58 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
GlukOza > Как определить ко-во строк в выполненом запросе? > rowds = statement.executeQuery(sql);int row = rowds.getRow(); > row=0. Но это не верно так как запрос я паралельно выполнила в > навигаторе и там точно есть строки. > Что не так?Тема==Ответить можно предворительно выполнить запрос с count ----------------------------------- The Bat + My Gate Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 12:07 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
GlukOza Как определить ко-во строк в выполненом запросе? rowds = statement.executeQuery(sql); int row = rowds.getRow(); row=0. это верно. вернулась текущая строка: int getRow() - Retrieves the current row number. ----------------------------------- The Bat + My Gate Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 12:08 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. rs.last(); - Выпадает в cath(SQLException el)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 12:37 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
GlukOza > rs.last();int resulSetSize = rs.getRow();rs.beforeFirst(); > rs.last(); - Выпадает в cath(SQLException el)?Тема==Ответить вроде не всякая БД поддерживает операции по произвольному перемещению курсора. rs.next() должен работать наверняка... сделай select count(*) вначале и не думай... ----------------------------------- The Bat + My Gate Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 12:45 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
GlukOza Код: plaintext 1. 2. 3. rs.last(); - Выпадает в cath(SQLException el)? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 12:55 |
|
||
|
Определение количества строк в ResultSet
|
|||
|---|---|---|---|
|
#18+
Deady GlukOza > rs.last();int resulSetSize = rs.getRow();rs.beforeFirst(); > rs.last(); - Выпадает в cath(SQLException el)?Тема==Ответить вроде не всякая БД поддерживает операции по произвольному перемещению курсора. rs.next() должен работать наверняка... сделай select count(*) вначале и не думай... ----------------------------------- The Bat + My Gate Posted via ActualForum NNTP Server 1.3 1) не бд, а драйвер. 2) count(*) ф топку! 3) если данные нужны, фетчи все и считай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 12:57 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2151257]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
135ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 414ms |

| 0 / 0 |
