9

我正在为班级做一个小组项目,我们正在尝试 CheckStyle。

我对 Java 相当熟悉,但在此之前从未接触过 JDBC 或做过任何数据库工作。

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

        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 好吗?那会让我引用列名吗?那是理想的吗?ETC...

谢谢!

4

2 回答 2

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 编码的“最佳实践”可以在这篇文章中找到。

希望这可以帮助。

于 2010-04-01T20:34:54.143 回答
2

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

于 2012-11-01T14:05:44.410 回答