1. ホーム
  2. java

[解決済み] 別のHSTMTの結果で接続がビジー状態になっている

2022-02-15 19:28:04

質問

ResultSetの値を反復処理し、whileループでクエリを挿入しようとしています。 コードスニペットは次のとおりです。

    String sel="select roll_no from Nursery";
    rs=stmt.executeQuery(sel);
    stmt1=con.createStatement();
    int aa;
    while(rs.next())
    {
        aa=rs.getInt(1);
        stmt1.executeUpdate("insert into [Nursery_FirstTerminal_marks](roll_no)values("+aa+")");
        //stmt.close();
    }

    JOptionPane.showMessageDialog(null, "Data has been inserted");
}
    catch(Exception e)
    {
        System.out.println(e);
        // JOptionPane.showMessageDialog(null, e);
    }

が、以下のようなエラーが発生します。

java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]Connection is busy with results for another hstmt

どうすればいいのか、教えてください。

解決方法は?

これは、同じ接続に対してオープン結果セットを開いている場合に発生します。例えば、あるテーブルからすべての行を選択する SqlCommand を実行し、結果セットが排出されていない状態で、同じ接続を使用して別の SqlCommand を実行しようとすると、このエラーメッセージが表示されます。

これを解決するためには、2つの選択肢があります。

a. 次の SqlCommand を送信する前に、保留中の結果セットから残りのデータを読み取ることを確認します。

b. MARS (Multiple Active ResultSet) 接続設定を使用して、1つの接続で複数のアクティブな結果セットを有効にします。