9

私はクラスのグループプロジェクトに取り組んでおり、CheckStyleを試しています。

私はJavaにかなり慣れていますが、これまでJDBCに触れたり、データベースの作業を行ったことはありません。

プリペアドステートメントの呼び出しでマジックナンバーエラーを回避するためのエレガントな方法があるかどうか疑問に思っていました。次のことを考慮してください。

        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で問題ないのかなど、厄介な習慣を身に付けないようにします。代わりに列名を参照できますか?それは理想的ですか?等...

ありがとう!

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 に答える