2010-04-01 13 views
9

Estoy trabajando en un proyecto de grupo para la clase y estamos probando CheckStyle.Evitar los errores del número mágico CheckStyle en las consultas JDBC

Estoy bastante cómodo con Java pero nunca he tocado JDBC ni he hecho ningún trabajo de base de datos antes de esto.

Me preguntaba si hay una manera elegante de evitar errores de números mágicos en PreparedStatement llama, tenga en cuenta:

 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(); 

El setString métodos se marcan como números mágicos, hasta ahora me acaba de agregar los números 3-10 más o menos a la lista de ignorar los números mágicos, pero me preguntaba si había una mejor manera de insertar esos valores en la declaración. También te pido cualquier otro consejo que me venga a la mente al ver ese código. Me gustaría evitar el desarrollo de hábitos desagradables, como por ejemplo, ¿Debería usar Statement o está PreparedStatement bien? ¿Eso me permitirá referirme a los nombres de las columnas? Es eso ideal? etc ...

Gracias!

+0

Como nota al margen, también sería útil saber cómo evitar los números mágicos al recuperar los datos también - es decir 'getString()' etc. –

Respuesta

12

Crear un método de utilidad que hace algo como esto:

public static void setValues(PreparedStatement preparedStatement, Object... values) throws SQLException { 
    for (int i = 0; i < values.length; i++) { 
     preparedStatement.setObject(i + 1, values[i]); 
    } 
} 

y utilizarlo como sigue:

setValues(preparedStatement, title, info, genre, youtube); 

o

Object[] values = { 
    title, info, genre, youtube 
}; 

setValues(preparedStatement, values); 

Más "mejores prácticas" en materia de la codificación JDBC básica se puede encontrar en this article.

Espero que esto ayude.

+0

¡Eso es excelente, muchas gracias! – Dan

Cuestiones relacionadas