5

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

抜け出す方法を教えてください。

4

2 に答える 2

7

これは、同じ接続に対して開いている結果セットが開いていることが原因です。たとえば、SqlCommandを実行してテーブルからすべての行を選択し、結果セットが排出されていないときに、同じ接続を使用して別のSqlCommandを実行しようとすると、このエラーメッセージが表示されます。

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

a。次のSqlCommandを送信する前に、保留中の結果セットから残りのデータを必ず読み取ってください。

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

于 2013-02-22T07:41:00.680 に答える
0

C#では、オブジェクトを使用した後にオブジェクトが作成される可能性がDisposeありCommandます。オブジェクトの自動ガベージCommandは十分ではありません。明示的に解放してみてください。多分Statement.close()あなたが必要なものです。ただ推測します。

于 2016-09-24T08:36:11.593 に答える