2013-07-09 11 views
8

データベースクエリを作成し、AccountオブジェクトをResultSetに保存します。結果セットのgetObject()メソッド - 正しく使用するには?

try { 
    ResultSet rs = queryDatabase(); 
    int i=0; 
    while (rs.next()) { 
     Account account= rs.getObject(i, Account); //ERROR 
     accounts.add(account); 
     i++; 
    } 
} catch (Exception e) { 
} 

このコードは3つのオブジェクトを返し、それらをrsに格納します。そして、そのオブジェクトをResultSetに入れて、コードに表示されているようにArrayListに入れたいと思います。しかし、指定された行には、;と予想されるエラーが返されます。 getObjectメソッドを正しく使用するにはどうすればよいですか?

+0

なぜ 'getObject':'(( '' and '))'の隣に二重括弧がありますか? – rgettman

+0

構文エラー*があることを伝えています。同様に、あまりにも多くのかっこと、属していないタイプ、たとえば、。 –

+0

まあ、paranthesesについて私はそれらを修正しました – yrazlik

答えて

3

ResultSet.getObject(および他のgetXxx方法は)ResultSetの現在の行からデータを取得し、インデックスあなたは0値を使用してi変数が設定されている1で始まります。

だけでも、getObjectは、単一のparamが必要ですが、あなたは間違って2を送っている

int i=1; 

するために、この

int i=0; 

を変更:

Account account= rs.getObject(i, Account); 

おそらくあなたがしようとしていましたResultSet#getObject(int, Class)(Java 7から入手可能)を使用してください。しかし、あなたはacあなたのAccountクラスがという魔法のようにをこのオブジェクトのインスタンスに変換することはできません。

最初にJDBC trialを確認してから、問題を解決することをお勧めします。

は、ここで検討する別の良いソースです:Using Customized Type Mappings

+0

私はそれを試して、また、erroneusの行をAccount account = rs.getObject(i、Account.class)に変更しました。構文エラーはありませんが、nullを返します。私はデバッグして質問を編集します。ありがとうございました – yrazlik

+1

@iceface私の答えの更新を確認してください。 –

+0

それは意味をなさない、私はそれがありがたいやり方を見つけた。ストリングs = rsを作るとき。getString(0);それはエラーを与えないので、もし私がAccountオブジェクトのために同じことをすればOKだが、それは – yrazlik

1

当社オブジェクト:BDから私たちのオブジェクトを取得する方法

import java.io.Serializable; 
... 
class Account implements Serializable{ 
    public String data; 
} 

:私たちのオブジェクトを保存する方法

while (rs.next()) { 
     Object accountJustObject = rs.getObject(i); 
     Account account = (Account)accountJustObject; 
     accounts.add(account); 
     i++; 
} 

public void InsertAccount(int id, Account newaccount){ 
reparedStatement insertNew = conn.prepareStatement(
    "INSERT INTO root(id,account) VALUES (?,?)"; 
    insertNew.setInt(1, id);    //INT field type 
    insertNew.setObject(2, newaccount); //OTHER field type 
    insertNew.executeUpdate(); 
) 
} 

H2データベースでテストされています。

関連する問題