3

私はswingプロジェクトに取り組んでいます。私はjdbc odbc接続ブリッジを使用してSQLデータベースからデータにアクセスしています。次のコードを使用しています

 try
  {
     Class.forName("sun.jdbc.odbc.JdbcodbcDriver");
     Connection con=DriverManager.getConnection("Jdbc:Odbc:dsn");
     Statement st=con.createStatement();
     ResultSet rs=st.executeQuery("select * from temp");
     int count c=0;
     while(rs.next())
     {
      c++;
     }

   }
  catch(Exception ex)        
   {
    ex.printStackTrace();
    }

whileループ後の上記のコードでは、結果セットオブジェクトを再度使用すると、結果セットが閉じられているため例外がスローされます。切断モードでデータベースからデータをフェッチするための結果セットの代わりに他のオブジェクトはありますか?

4

2 に答える 2

9

結果セットには結果が含まれていません。これは、データベース (またはドライバーのキャッシュ) にまだ存在する結果に対する一種の反復子です。

それは完全に正常です。

切断後に結果のリストを保持したい場合は、ArrayList などの具体的なリストにコピーしてください。これは、このコピーの時点で列の解釈を行う必要があることを意味します (つまり、getIntまたはgetStringまたはを使用してコンテンツを取得するなど)。getBinaryStream

于 2013-01-09T07:41:14.657 に答える
4

切断モードでデータベースからデータをフェッチするための結果セットの代わりに他のオブジェクトはありますか?

ResultSet接続が確立された後にデータを取得します。そして、このタスクを実行する他のオブジェクトはありません。

データをいくつかのリスト(または他のデータ構造)に保存し、whileループ内でそのリストを埋める必要がありますResultSet

于 2013-01-09T07:42:32.003 に答える