Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JTDS или я тупой? / 11 сообщений из 11, страница 1 из 1
08.05.2015, 12:04
    #38954452
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTDS или я тупой?
делаю пейджинг, наткнулся на полное не понимание происходящего...
это JTDS подкидывает или я делаю не так?

Ниже сделал тест, тоже не работает
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
/*
        CREATE TABLE [dbo].[TEST](
            [ID] [int] NOT NULL,
            [TEXT] [varchar](50) NOT NULL
        ) ON [PRIMARY]
         */
        PreparedStatement pstmt;
        pstmt = connection.prepareStatement(
                "INSERT INTO [TEST]([ID],[TEXT]) VALUES (?, ?)");
        for(int i=1; i<101; i++) {
            pstmt.setInt(1,i);
            pstmt.setString(2,"тест "+i);
            pstmt.addBatch();
        }
        pstmt.executeBatch();
        pstmt.close();

        pstmt = connection.prepareStatement("select * from [TEST]",
                ResultSet.TYPE_SCROLL_INSENSITIVE,
                ResultSet.CONCUR_READ_ONLY);
        ResultSet rs = pstmt.executeQuery();

        int pageNumber=0;     // номер страници
        int countR    =50;    // число строк в странице

        // if(rs.absolute(pageNumber * countR)) // все ок, стоим внутри выборки
        // else                                 // промахнулись, улетели за выборку
        {
            boolean ret =rs.absolute(52);            // это тест, 'relative' не работает от 52 до 100
        //  boolean ret =rs.absolute(51);            // это тест, 'relative' работает
        //  boolean ret =rs.absolute(101);           // это тест, 'relative' работает

            ret = rs.last();                        // ставим на конец
            int pos = rs.getRow();                  // получаем номер последней записи - 100
            pageNumber = (pos - 1) / countR;        // вычисляем номер последней не пустой (-1) страници
            int cursor = pageNumber * countR;       // вычисляем позицию курсора

            ret = rs.relative(cursor - pos);        // устанавливаем курсор смещением от конца
                                                    // для 52 - false, 51 - true
            pos = rs.getRow();                      // для 52 - 0, для 51 -50

            System.out.println(pos);
        }

        rs.close();
        pstmt.close();



ничего не понимаю
...
Рейтинг: 0 / 0
08.05.2015, 12:19
    #38954469
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTDS или я тупой?
А что значит "работает\не работает" ? В чем проявляется?
...
Рейтинг: 0 / 0
08.05.2015, 12:21
    #38954474
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTDS или я тупой?
Blazkowicz,

в выполнении
Код: java
1.
2.
3.
ret = rs.relative(cursor - pos);        // устанавливаем курсор смещением от конца
                                                    // для 52 - false, 51 - true
            pos = rs.getRow();                      // для 52 - 0, для 51 -50



никакого 0 быть не должно
...
Рейтинг: 0 / 0
08.05.2015, 12:23
    #38954476
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTDS или я тупой?
не работает
ret = rs.relative(cursor - pos); // устанавливаем курсор смещением от конца
...
Рейтинг: 0 / 0
08.05.2015, 12:26
    #38954478
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTDS или я тупой?
am_sasa
Код: java
1.
ret = rs.relative(cursor - pos);        // устанавливаем курсор смещением от конца


Смещение от конца это rs.absolute(-x);


am_sasaникакого 0 быть не должно
Да с фига ли?

RTFM Returns:
the current row number; 0 if there is no current row
...
Рейтинг: 0 / 0
08.05.2015, 12:34
    #38954490
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTDS или я тупой?
При наличии
ret = rs.last();
Каким образом
boolean ret =rs.absolute(x);
может влиять на результат теста?
...
Рейтинг: 0 / 0
08.05.2015, 12:38
    #38954499
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTDS или я тупой?
Blazkowicz,
это все понятно, это другой алгоритм

вопрос, почему после
rs.absolute(52); // или любая позиция между 52 и 100
rs.last(); // ставим на конец, курсор на 100
rs.relative(- 50); // отступить от ТЕКУЩЕЙ позиции назад, например на 50, не работает?
...
Рейтинг: 0 / 0
08.05.2015, 12:39
    #38954502
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTDS или я тупой?
BlazkowiczПри наличии
ret = rs.last();
Каким образом
boolean ret =rs.absolute(x);
может влиять на результат теста?

так в этом и вопрос, без rs.absolute(x); - работает!!!
...
Рейтинг: 0 / 0
08.05.2015, 12:47
    #38954519
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTDS или я тупой?
Версия JTDS свежая?
...
Рейтинг: 0 / 0
08.05.2015, 12:54
    #38954531
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTDS или я тупой?
Blazkowicz,

последняя, это я сразу проверил..
...
Рейтинг: 0 / 0
12.05.2015, 10:40
    #38956144
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JTDS или я тупой?
am_sasa,

поставил драйвер Microsoft JDBC sqljdbc4, все работает как надо, однако JTDS ...
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JTDS или я тупой? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]