2010-11-23 9 views
1

データベースに含まれるテーブルからすべてのデータを取得し、それをリストに解析しようとしています。私はいくつかのテクニックを試してきましたが、それを動かすことはできません。 ResultSetをシリアル化しようとしているので、ソケットを介して送ることができます。私がこれまで持っているコードは次のとおりです。データベース結果セットをオブジェクトリストに解析する

public Object readJavaObject(String query, Connection con) throws Exception 
{   
    PreparedStatement stmt = con.prepareStatement(query); 
    //stmt.setString(1, id); 
    query_results = stmt.executeQuery(); 
    while (query_results.next()) 
    { 
     dataObject = query_results.getObject(1); 
    } 
    query_results.close(); 
    stmt.close(); 

    return dataObject; 
} 

public void run() 
{ 
    try 
    { 
     Class.forName(dbClass); 
     con = DriverManager.getConnection (dbUrl, user, pass); 
     query = "SELECT * FROM Bench_table"; 
     dataList = (List) this.readJavaObject(query, con); 
     con.close(); 
    } 
} 

私の周りreadJavaObjectを書くことがどのようなコードはよく分かりません。問題がどこにあるのかを誰かが助けてくれるの?

ありがとうございました。

+0

例外とは何か、エラーメッセージは何ですか? –

+0

@ The Elite Gentleman - 私は、すべてのテーブルデータをResultSetの代わりにListとして保存しようとしています。ありがとうございました – chrissygormley

答えて

2

コードにはいくつかの問題があります。

  1. 結果をループしますが、 は最後の行のデータのみを返します。 代わりに、 のreadJavaObjectメソッドでリストを作成し、それぞれ 要素を追加します。
  2. 最初の列に項目を表示する代わりに、すべてのデータを必要とすると仮定します。 ResultSetからデータを取り出すために使用する「取得」メソッドを特定する必要があります。 POJOを作成してデータの行を表現し、ループ内にPOJOを作成してリストに格納します。
  3. POJOを使用していると仮定すると、キャストすることなく簡単にアイテムを取得できるように、リストにジェネリックスを使用することができます。
3

DbUtils(apache-commonsより)をご覧ください。

SQL結果をjavaオブジェクトにマッピングするためのより複雑なソリューションが必要な場合は、object-relational mappingをご覧ください。 Javaでは、JPA(Java Persistence API)が標準であり、Hibernate、EclipseLink、OpenJPAが最も有名な実装者です。

+0

私は "休止状態のない休止状態"と他のバリエーションの最後の30分を探しています。これは私が探していたものに見つけた最初の参照です...ありがとう! –

0

私は最近、CachedRowSetを発見しました。これは、正確にOPが必要とするものです。 特には、ResultSetをシリアル化し、必要に応じて元の状態に戻すことができます。

関連する問題