2011-12-09 30 views
1

このコードを実行すると、「無効なカーソル状態」エラーが表示されます。この "無効なカーソル状態"エラーの原因は何ですか?

このコードを使用して、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); 
} 
+0

便利なデバッグ出力があるようです。あなたの質問にそれを含めてください。 「Course_IDに」、「COURSE_NAME」、「course_date」と「コース番号」 >>ここに私のテーブルには、どのように見えるかです:: は\tをCourse_IDに – erickson

答えて

2

私は、主な問題は、あなたがカーソルをスクロールする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); 
} 
+0

は私が一つのテーブル「もちろん」により命名されている、このテーブルは 4つのフィールドを含みCOURSE_NAME \t course_date \tコース番号 データデータデータデータ –

+0

は>>ここに私のテーブルには、どのように見えるかです: は\t COURSE_NAME \t course_dateをCourse_IDに\tコース番号 データデータデータデータ データデータデータデータ データデータデータデータ データデータのデータデータ 最初のループを使って行数を取得し、2番目のループを使用して列数を取得しました。これは各行のcoulmns数を知るのに役立ちます。なぜ私はそれを必要としないのか理解できません。もし私がそれを使わなければ、私はデータを手に入れることができません! –

+0

@GhadeerWalid私は今あなたの構造を理解しています。あなたのコードから推測したものではありません。私は私の答えを更新します。 – erickson

関連する問題