避免JDBC查询中的CheckStyle幻数错误

时间:2010-04-01 19:08:53

标签: jdbc checkstyle

我正在为课堂上的小组项目工作,我们正在尝试CheckStyle。

我对Java非常熟悉,但在此之前从未接触过JDBC或完成任何数据库工作。

我想知道在prepareStatement调用中是否有一种优雅的方法来避免幻数错误,请考虑:

        preparedStatement = connect.prepareStatement("INSERT INTO shows "
                + "(showid, showtitle, showinfo, genre, youtube)"
                + "values (default, ?, ?, ?, ?);");
        preparedStatement.setString(1, title);
        preparedStatement.setString(2, info);
        preparedStatement.setString(3, genre);
        preparedStatement.setString(4, youtube);
        result = preparedStatement.executeUpdate();

setString方法被标记为幻数,到目前为止,我只是将数字3-10左右添加到魔术数字的忽略列表中,但我想知道是否有更好的方法将这些值插入到语句中。我也恳求你看到任何其他的建议,我想避免发现任何讨厌的习惯,例如我应该使用Statement还是PreparedStatement没问题?那会让我参考列名吗?那是理想的吗?等...

谢谢!

2 个答案:

答案 0 :(得分:13)

创建一个实用程序方法,它执行以下操作:

public static void setValues(PreparedStatement preparedStatement, Object... values) throws SQLException {
    for (int i = 0; i < values.length; i++) {
        preparedStatement.setObject(i + 1, values[i]);
    }
}

使用如下:

setValues(preparedStatement, title, info, genre, youtube);

Object[] values = {
    title, info, genre, youtube
};

setValues(preparedStatement, values);

有关基本JDBC编码的更多“最佳实践”可以在this article中找到。

希望这有帮助。

答案 1 :(得分:2)

我建议即使您不使用Spring,也请尝试使用NamedParameterJdbcTemplate。请查看http://www.dzone.com/tutorials/java/spring/spring-named-parameter-jdbc-template.html以获取有关如何使用它的教程。