Evitare Checkstyle magici errori numerici nelle query JDBC
-
23-09-2019 - |
Domanda
Sto lavorando su un progetto di gruppo per la classe e stiamo provando CheckStyle.
Sono abbastanza confortevole con Java, ma non hanno mai toccato JDBC o fatto alcun lavoro di database prima di questo.
Mi chiedevo se esiste un modo elegante per evitare errori di numero magico nelle chiamate PreparedStatement, considerare:
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();
I metodi setString vengono segnalate come numeri magici, finora ho solo aggiunto i numeri 3-10 o giù di lì alla lista da ignorare per i numeri di magia, ma mi chiedevo se ci fosse un modo migliore per andare su come inserire questi valori nella dichiarazione . Ho anche chiedere per qualsiasi altro consiglio che viene in mente visto che il codice, vorrei evitare lo sviluppo di eventuali cattive abitudini, per esempio dovrei usare Statement o è PreparedStatement bene? Sarà che mi permetta riferisco a nomi di colonna, invece? È questo ideale? ecc ...
Grazie!
Soluzione
Crea un metodo di utilità che fa qualcosa di simile:
public static void setValues(PreparedStatement preparedStatement, Object... values) throws SQLException {
for (int i = 0; i < values.length; i++) {
preparedStatement.setObject(i + 1, values[i]);
}
}
e usarlo come segue:
setValues(preparedStatement, title, info, genre, youtube);
o
Object[] values = {
title, info, genre, youtube
};
setValues(preparedStatement, values);
Più "buone pratiche" in materia di JDBC di base codifica può essere trovato in questo articolo .
Spero che questo aiuti.
Altri suggerimenti
vorrei suggerire che anche se non si utilizza Primavera, provare a utilizzare il NamedParameterJdbcTemplate invece . Date un'occhiata a http: //www.dzone .com / tutorials / java / primavera / spring-nome-parametro-jdbc-template.html per un tutorial su come usarlo.