Resultset 的 getObject() 方法 - 如何正确使用它?



我进行数据库查询,并将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需要一个参数,但您错误地发送了两个:

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

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

看起来最好先查看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数据库下测试。

对象变量,包括:

  • 仅引用内存中的空间
  • 任何REFERENCE都使用内存(只是一点点)
  • 从一个引用中获取/使用任何特定类类型的对象的方法是简单地对其进行类型转换

相关内容

  • 没有找到相关文章

最新更新