Por ejemplo, supongamos que queremos consultar (tomando como SGBD MySQL) la cantidad de registros en una tabla cualquiera, entonces tenemos algo como esto en nuestro código:
Class.forName("com.mysql.jdbc.Driver"); Connection conexion = DriverManager.getConnection ("jdbc:mysql://localhost/mi_bd","root", "mi_clave"); Statement stat = conexion.createStatement(); ResultSet resultado = stat.executeQuery ("SELECT * FROM mi_tabla"); while (resultado.next()) { System.out.println (resultado.getString("Mi_Campo")); } conexion.close();Y si queremos hacerlo en otra tabla ¿volvemos a hacer lo mismo?, vamos que no es la idea. Para ello hagamos unos pequeños cambios, creemos una clase llamada por ejemplo "clase_bd", a la cual accedemos solo si necesitamos almacenar, actualizar o consultar registros de nuestra base de datos. Para ello entonces declaramos la clase pública junto con sus métodos:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.JOptionPane; public class clase_bd { static Connection conn = null; static ResultSet consulta = null; public static void abrir_bd(){ try { Class.forName("com.mysql.jdbc.Driver"); conn=DriverManager.getConnection("jdbc:mysql://servidor/bd", "usuario", "pass"); } catch (SQLException ex) { JOptionPane.showMessageDialog(null, "Verifique que los parametros de conexión sean los correctos. n"+ex,"Error",JOptionPane.ERROR_MESSAGE); System.exit(0); } catch (ClassNotFoundException ex) { JOptionPane.showMessageDialog(null, "No es posible inicializar el sistema: "+ex,"Error",JOptionPane.ERROR_MESSAGE); System.exit(0); } } public static ResultSet consulta (String peticion){ try { Statement stat = conn.createStatement(); consulta = stat.executeQuery(peticion); } catch (SQLException ex) { JOptionPane.showMessageDialog(null, "Error al realizar la consulta: "+ex,"Error",JOptionPane.ERROR_MESSAGE); } return consulta; } public static void registrar (String peticion){ try { Statement stat = conn.createStatement(); stat.executeUpdate(peticion); } catch (SQLException ex) { JOptionPane.showMessageDialog(null, "Error al almacenar el registro: "+ex,"Error",JOptionPane.ERROR_MESSAGE); } } }Lo que hacemos es simple, creamos un método de consulta, otro de registro y otro de conexión. Al de consulta se le envía por valor una cadena, la cual procesara y retornará el valor deseado; mientras que al de registro se le envía la cadena SQL y no devuelve ningún valor, solo ejecuta la sentencia y listo. Una vez que tenemos la clase construida, la llamamos en nuestro método principal para iniciar las variables de conexión:
public class programa { public static void main(String [] args){ clase_bd.abrir_bd(); } }Entonces ya solo nos queda llamar al método de la clase para obtener los resultados deseados, por ejemplo, para consultar "X" campo de nuestra base de datos:
ResultSet consulta = clase_bd.consulta("SELECT campos FROM tabla"); while (consulta.next()){ System.out.println(consulta.getString(1)); }Para almacenar un registro:
clase_bd.registrar("INSERT INTO tabla VALUES (valores)"); JOptionPane.showMessageDialog(null, "Registro Almacenado","Prueba...",JOptionPane.INFORMATION_MESSAGE);
Recibe notificaciones por correo