Предотвращение ошибок магического числа 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 к черному списку для магических чисел, но я задавался вопросом, был ли лучший способ пойти о вставке тех значений в оператор. Я также прошу Вас совета, который приходит на ум, видя, что код, я хотел бы постараться не разрабатывать какие-либо противные привычки, например, я должен использовать Оператор или в порядке PreparedStatement? Это позволит мне обратиться к именам столбцов вместо этого? Это идеально? и т.д...

Спасибо!

9
задан Dan 1 April 2010 в 19:08
поделиться

1 ответ

Создайте служебный метод, который делает что-то вроде этого:

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 можно найти в этой статье.

Надеюсь, это поможет.

13
ответ дан 4 December 2019 в 13:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: