2016-07-26 5 views
1

私は以下のようにResultSetに複数の行を挿入していました。すべての行を挿入した後にResultSetを出力する必要があります。エラー - 「この行でエラー:Java.lang.IllegalStateException:カーソルが挿入行にあるときに、このメソッドは呼び出すことはできません」JDBC - insertRowからカーソルを移動する

ResultSet rs = ...; 
for(int i=0; i<5; i++){ 
rs.moveToInsertRow(); 
    rs.updateString("NAME", "Jon"); 
    rs.updateString("ADDRESS", "111 New York"); 
    rs.updateString("EMAIL", "[email protected]"); 
} 

rs.beforeFirst(); // Error at this line: Java.lang.IllegalStateException: This method cannot be called when the cursor is on the insert row 

//ResultSet print logic goes here 
if(rs.getType() == ResultSet.TYPE_FORWARD_ONLY){ 
    ResultSetMetaData rsmd = rs.getMetaData(); 
    int columnsNumber = rsmd.getColumnCount(); 
    while (rs.next()) { 
     for (int i = 1; i <= columnsNumber; i++) { 
     String columnValue = rs.getString(i); 
     sb.append(rsmd.getColumnName(i)).append(" : ").append(columnValue).append("  "); 
     } 
    } 
} 

バック初期位置するときのmoveToInsertRowにカーソルを移動する方法任意のアイデア、 ()が呼び出されましたか?

答えて

0

あなたは、これを行うには、あなたの声明は、スクロール可能な挿入をした後

Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); 
0

以下のようなものを作る必要があり、あなたがした後、戻ってあなたがどこに行に行くためにmoveToCurrentRow()を使用して挿入行を残しておく必要があります(実際にスクロール可能なカーソルがあると仮定して)beforeFirst()に電話することができます。

ドライバの実装によっては、結果セットから挿入された行が現在の結果セットに表示されない可能性があります。

関連する問題