将rs移至方法会导致异常

时间:2014-10-14 15:00:29

标签: java sql

我有一些重复的以下代码

rs = prepStmt.executeQuery();
rs.next();

我想将它移动到一个方法,以便我可以重用代码。方法如下:

public static void point(ResultSet rs, PreparedStatement prepStmt){
        rs = prepStmt.executeQuery();
        result = rs.next();
}

然后我想得到一个列值,比如,String gender = rs.getString(“gender”); 我得到以下异常: java.sql.SQLException:列名称性别无效。当我没有时,错误没有显示出来 封装方法中的逻辑。所以列名是正确的。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:2)

您似乎假设对rs参数的更改将传播到调用代码。它没有赢。 Java中的所有内容都通过值传递 - 包括引用。相反,你应该做的事情如下:

public static ResultSet point(PreparedStatement prepStmt) {
    ResultSet rs = prepStmt.executeQuery();
    result = rs.next();
    return rs;
}

然后您将其称为:

ResultSet rs = point(prepStmt);

(不清楚result是什么,或者是否真的值得宣布一个额外的方法,以避免直接调用rs.next() ...尤其是当它意味着rs.next()的结果有点模糊......)