Что вызывает эту ошибку «недопустимое состояние курсора»? - PullRequest
1 голос
/ 09 декабря 2011

При запуске этого кода появляется ошибка «Недопустимое состояние курсора».

Я использую этот код, чтобы получить набор результатов из базы данных Access, а затем сохранить его в таблице.

Этот сегмент кода предназначен только для получения данных из набора результатов:

data=new Object[numberOfRows][numberOfColumns];
for(int i=0;i<numberOfRows;i++){
  int j=0;
  while(j<numberOfColumns){
    // int colType=rsmd.getColumnType(j+1); 
    // System.out.println(colType);
    data[i][j]=rs.getInt("course_id");
    System.out.print("0th: "+data[i][j]+"    ");
    j++;
    data[i][j]=rs.getString("course_name");
    System.out.print("1st:"+data[i][j]+"    ");
    j++;
    data[i][j]=rs.getString("course_date");
    System.out.print("2nd:"+data[i][j]+"    ");
    j++;
    data[i][j]=rs.getString("course_number");
    System.out.print("3rd: "+data[i][j]+"    ");
    j++;
    System.out.print("j:"+j);
  }
  System.out.print("Done line:"+i);
}

1 Ответ

2 голосов
/ 09 декабря 2011

Я думаю, что главная проблема в том, что вы никогда не вызываете rs.next() для прокрутки курсора.Однако, исходя из вашего разъяснения структуры записи, ваш цикл while, похоже, тоже запутался.Попробуйте следующее:

data=new Object[numberOfRows][numberOfColumns];
for(int i=0;i<numberOfRows;i++) {
  if (!rs.next())
    throw new IllegalStateException();
  int j=0;
  // int colType=rsmd.getColumnType(j+1); 
  // System.out.println(colType);
  data[i][j]=rs.getInt("course_id");
  System.out.print("0th: "+data[i][j++]+"    ");
  data[i][j]=rs.getString("course_name");
  System.out.print("1st:"+data[i][j++]+"    ");
  data[i][j]=rs.getString("course_date");
  System.out.print("2nd:"+data[i][j++]+"    ");
  data[i][j]=rs.getString("course_number");
  System.out.print("3rd: "+data[i][j++]+"    ");
  while(j<numberOfColumns) {
    data[i][j]=rs.getString(j + 1);
    System.out.print(j+"th: "+data[i][j++]+"    ");
  }
  System.out.println();
  System.out.println("Done line:"+i);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...