从结果集中获取用户定义的对象实例

时间:2014-11-05 14:31:21

标签: java sql jdbc resultset

我有一个编码任务,我被卡住了......

我有一个帐户表,我需要在其中选择未处理的帐户;这就是我做得很轻松的事情

现在,作业要求我返回Accounts数组中的每个帐户;我从查询中得到了

那么,我如何将一个帐户数组(我如何在结果集中填写每个未被删除的帐户)返回到Accounts数组中,以便从已经定义的函数返回,我不允许这样做。

结果集是否有任何方式:返回其包含的单行作为帐户实例?

我们需要使用Java 5而不允许实现第三方库

P.S

我已经尝试过了:

Account account = (Account) rs.getObject("ID");` this has a classcast exception

Account account = (Account) rs.getObject("ID",Account.Class);这还有其他一些例外

我还读过: 自定义类型映射 但我不确定即使在完成了所有内容之后我也会得到所需的结果

此解决方案还涉及首先在databaselevel上创建customtype(在本例中为account),我也不允许触摸

如其他一些答案所述

请分享你的exp。

1 个答案:

答案 0 :(得分:0)

您获得的类强制转换异常是预期的,因为rs.getObject(“ID”)不提供属于Account类的对象。您可以创建Account对象的数组(或List),并在迭代结果集时填充它。 (假设您在结果集的单行中拥有帐户的所有信息)。我们还假设Account类如下:

class Account {
    int id;
    String accountType;
    String accountHolderName;
    long accountBalance;
    ...
    ...
    ...
}

//假设您要查询的表列包含每行的这些字段:

AccountId | AccountType | AccountHolderName | AccountBalance | ...
101       | Checking    | John              | 100            | ...

//填充帐户对象

    Account [] accArray = new accArray [sizeOfResultSet];
    int i=0;
    while (rs.next()){
            Account current = new Account();
            current.id  = rs.getInt("AccountId");
            current.accountType = rs.getString("AccountType");
            current.accountHolderName = rs.getString("AccountHolderName");
            ...
            ...
            ...
    }