我正在为课堂上的小组项目工作,我们正在尝试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没问题?那会让我参考列名吗?那是理想的吗?等...
谢谢!
答案 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以获取有关如何使用它的教程。