我进行数据库查询并在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
方法?
答案 0 :(得分:3)
ResultSet.getObject
(以及其他getXxx
方法)将从ResultSet
的当前行检索数据并从索引1开始。您已设置i
变量0值。
只需更改此
int i=0;
要
int i=1;
此外,getObject
需要一个参数,但您输错了两个:
Account account= rs.getObject(i, Account);
可能您尝试使用ResultSet#getObject(int, Class)
(可从Java 7获得),但您必须考虑到您的Account
类无法神奇地转换为数据库列到此对象的实例。
最好首先查看JDBC trial,然后重试以解决您的问题。
以下是另一个值得审核的好消息来源:Using Customized Type Mappings
答案 1 :(得分:1)
我们的目标:
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数据库下测试。
答案 2 :(得分:0)
对象变量是: