8

我进行数据库查询并将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正确使用方法?

4

3 回答 3

3

ResultSet.getObject(和其他getXxx方法)将从索引 1 的当前行检索数据ResultSet。您已将i变量设置为 0 值。

改变这个

int i=0;

int i=1;

此外,getObject需要一个参数,但您错误地发送了两个:

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

可能您正在尝试使用ResultSet#getObject(int, Class)(可从 Java 7 获得),但您必须考虑到您的Account类不能神奇地从数据库列转换为该对象的实例。

看起来最好先查看JDBC 试用版,然后重试解决您的问题。

这是另一个值得回顾的好资料:Using Customized Type Mappings

于 2013-07-09T23:23:41.163 回答
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 数据库下测试。

于 2014-12-14T11:14:32.180 回答
0

对象变量是:

  • 仅引用内存中的空间。
  • 任何 REFERENCE 都使用内存(只是一点点)
  • 从一个引用中获取/使用特定类型类的任何对象的方法是通过简单的类型转换它。
于 2019-06-07T15:30:35.053 回答