データベースクエリを作成し、Account
オブジェクトをResultSet
に格納します。コードは次のとおりです。
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
メソッドを適切に使用するにはどうすればよいですか?
_ResultSet.getObject
_ (および他のgetXxx
メソッド)は、ResultSet
の現在の行からデータを取得し、インデックス1から開始します。i
変数に0の値を設定しました。
これを変更するだけ
_int i=0;
_
に
_int i=1;
_
また、getObject
には1つのパラメーターが必要ですが、誤って2つ送信しています。
_Account account= rs.getObject(i, Account);
_
おそらくあなたは ResultSet#getObject(int, Class)
(Java 7)から入手可能)を使おうとしていましたが、Account
クラスが使用できないことを考慮に入れる必要がありますデータベース列からこのオブジェクトのインスタンスにmagically変換されます。
JDBCトライアル を最初に確認してから、問題の解決を再試行する方がよいようです。
レビューする別の良い情報源は次のとおりです。 カスタマイズされた型マッピングの使用
私たちの目的:
import Java.io.Serializable;
...
class Account implements Serializable{
public String data;
}
Bdからオブジェクトを取得する方法:
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データベースでテスト済み。
オブジェクト変数は次のとおりです。