2011-04-16 19 views
0

私は、ドライバがロードしている接続と接続が行われていることを確認しました。データベースを照会する私のメソッドはエラーなしで実行されていますが、5列と0行の空の結果セットが返されます(これはデバッグを介して検証されます)。テストデータベースに5つの列を持つ4つのレコードがあり、クエリはすべての結果を返すように求めます。私はちょうど疲れているかもしれません...何が失われたのかについての洞察は?ここにはクエリメソッドがあります。データベースファイルはアクセスです.mdbJAVA:データベースの結果セットはゼロ行を返し続けます。

パブリックArrayList fillResults() { ArrayList savedData = new ArrayList(); ステートメントstmt = null; 結果セットの結果= null;

try 
    { 
     stmt = conn.createStatement(); 
     results = stmt.executeQuery(SELECT_ALL); 
     while(results.next()) 
     { 
      for(short i = 0; i < 5; i++) 
      { 
       savedData.add(results.getString(i)); 
      } 
     } 

    } 
    catch(SQLException ex) 
    { 
     JOptionPane.showMessageDialog(null, ex.getMessage() + ": error during retrieval."); 
    } 
    finally 
    {   
     try 
     { 
      results.close(); 
      stmt.close(); 
     } catch (SQLException e){} 
    } 

    return savedData; 
} 
+0

正しいデータベースを使用していることを再確認してください。どのようにコードは、結果セットを反復処理しますか? –

+0

しばらくの間(results.next()) \t \t \t { \t \t \t \t(ショートi = 0; iが5 <; iは++) \t \t \t \t { \t \t \t \t \t savedData.add(結果。 getString(i)); \t \t \t \t} \t \t \t} – Sinaesthetic

+0

最初の列は、インデックス1を有し、0でない –

答えて

0

ResultSetを返さないでください。パーシスタンスクラスにはSwing JOptionPaneが含まれていてはなりません。

はこのようにそれを試してみてください。

package persistence; 

import java.sql.Connection; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.ArrayList; 
import java.util.List; 

public class JdbcDemo 
{ 
    private static final String SELECT_SAVED_DATA = "select * from saveData"; 

    private Connection connection; 

    public JdbcDemo(Connection connection) 
    { 
     this.connection = connection; 
    } 

    public List<String> getSavedData() throws SQLException 
    { 
     List<String> savedData = new ArrayList<String>(); 

     Statement stmt = null; 
     ResultSet rs = null; 
     try 
     { 
      stmt = this.connection.createStatement(); 
      rs = stmt.executeQuery(SELECT_SAVED_DATA); 
      while (rs.next()) 
      { 
       savedData.add(rs.getString(1)); // modify this as needed 
      } 
     } 
     finally 
     { 
      DatabaseUtils.close(rs); 
      DatabaseUtils.close(stmt); 
     } 

     return savedData; 
    } 
} 
+0

同じ結果セットを取得しても、5列の0行が返されます。ちょうど確認するために、私はわずか2列を返すようにクエリを変更しました。結果セットは2列0行で戻ってきました。 im lost – Sinaesthetic

+0

別のクライアントを使用してデータベースにログインして行を見ることができれば、自分が思っているデータベースに接続していないと言います。接続URLを確認し、別のクライアントで行が表示されていることを確認してください。あなたの前提を確認してください - 彼らがあなたが得るべきだと思っているものと一致しないときは、あなたは間違った前提で自分をだましていると言います。 – duffymo

+0

接続は正常でした。私はあなたが投稿したものを廃止し、それを使い始めました。私には分かりません。好奇心から戻ってきた結果セットを返信してみましたが、それでもまだ仕事はありませんでした。理解できません。しかし、私は今、ノンティリスト – Sinaesthetic

関連する問題