2010-04-01 43 views
9

我正在为类的组项目工作,我们正在尝试CheckStyle。在JDBC查询中避免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 ...

谢谢!

+0

作为一个侧面提示,在获取数据的同时知道如何避免幻数也是有用的 - 也就是'getString()'等。 – 2013-12-12 15:52:24

回答

12

创建这确实是这样的实用方法:

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中找到。

希望这会有所帮助。

+0

非常好,非常感谢! – Dan 2010-04-02 03:48:17