Обычная версия
Java форум JavaTalks
форум программистов

Поиск   Пользователи   Группы   Регистрация 
 Профиль   Личные сообщения 

 Вход 

Плавающая ошибка Result set type is TYPE_FORWARD_ONLY
Список форумов
 ->  Работа с базами данных


 
Начать новую тему 
Предыдущая тема :: Следующая тема  
Автор Сообщение
MadMax : 2
Новичок

СообщениеЯнв 24, 2012 10:00 
Ответить с цитатой
Уважаемые форумчане, помогите разобраться со следующей проблемой: столкнулся с плавающей ошибкой, связанной с перемещением по ResultSet, а именно определением количества строк. На некоторых базах все работает (DB2 через ODBC, MySql напрямую), а на другой (Cache через ODBC) выходит эта ошибка.

Вот куски кода:
Код:

sql = db.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
int number = -1;
if (sql.execute(query)) {
  result = sql.getResultSet();
  info = result.getMetaData();
  number = fillData(rowLimit);
} else {
  number = sql.getUpdateCount();
}
return number;


и сама функция для извлечения данных fillData

Код:

    public int fillData(int rowLimit) throws projectException{
        if (checkConnection()) {
            try {
                colHeads = new String[0];
                data = new String[0][0];
                int number = -1;
                int rownum = 0;
                if (info != null && result != null) {
                    number = info.getColumnCount();
                    colHeads = new String[number];
/*возникает ошибка*/   result.last();
                    int total = result.getRow();
                    total = (total<rowLimit?total:rowLimit);
                    data = new String[total][number];
                    for (int i = 0;i<number;i++)
                        colHeads[i] = info.getColumnLabel(i+1);
                    result.beforeFirst();
                    while(result.next()) {
                        if (rownum>=total) break;
                        for (int i = 0;i<number;i++) {
                            data[rownum][i] = result.getString(i+1);
                        }
                        rownum++;
                    }
                }
                return rownum;
            } catch (Exception e) {
                try {
                    closeConnection();
                } catch (projectException e1) {}
                finally {throw new projectException(e.getMessage());}
            }
        } else
            return -1;
    }

Подскажите, в какую сторону капать?
Соединение на обоих базах проходит правильно, запрос выполняется, количество столбцов извлекается правильно, не работает перемещение по ResultSet
К началу Посмотреть профиль Отправить личное сообщение
MadMax : 2
Новичок

СообщениеЯнв 30, 2012 9:22 
Ответить с цитатой
Удивительно, но эта ошибка исчезла, когда я вместо ODBC использовал подключение напрямую к серверу.
К началу Посмотреть профиль Отправить личное сообщение
 
Начать новую тему  Ответить на тему
Страница 1 из 1
Список форумов
 -> Работа с базами данных


 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Java and all Java-related trademarks and logos are trademarks or registered trademarks of Oracle Corporation in the United States and other countries.
Это сайт не относится к фирме Oracle Corporation и не поддерживается ею.

© 2006-2010 www.javatalks.ru: форум java программистов
Используется скрипт phpBB © 2001, 2010 phpBB Group

Хостинг от bizname.ru