Esta clase sirve para facilitar la interpretación entre un ResultSet a un ArrayList, además de que evitar que se tengan "try" por todos lados y se puedan administrar más facilmente.
Haciendo mucho mas sencillo el manejo de las consultas dentro de la aplicación.
Esta clase provee las siguientes funciones:
- Select
- SelectMatch
- Insert
- (Update disponible muy pronto)
Instanciación:
Query qry = new Query("com.mysql.jdbc.Driver", "jdbc:mysql://localhost/temporal", "root", "daniel");
ó solo = new Query(); y enviar los parametros por medio de los seters y geters disponibles.
Ejemplo 1:
Con el siguiente fragmento de código podemos saber si existe un registro
ideal para cuando deseamos hacer un ingreso que debe de ser único.
Query qry=new Query(); if (consulta.SelectMatch("tableName","ColumnName","parametro") ) ... else ...Ejemplo 2:
Con el siguiente fragmento se hace una consulta que devuelve un resultado para mostrar en la interfáz gráfica.
ComboBox1.removeAllItems(); ArrayListSe puede observar que lo que hace este código es:Resultado=new ArrayList (); Query consulta=new Query(); Resultado=consulta.Select("* FROM CHASIS",2); if (Resultado!=null) for (int x=0;x ComboBox1.addItem((Resultado.get(x))[0]+") "+(Resultado.get(x))[1]);
- Borrar el contenido del ComboBox.
- Se crea un ArrayList de tipo arreglo de String.
- Se crea un objeto de tipo Query.
- Se ejecuta el método Query.Select, que devuelve como resultado un ArrayList, este método recibe un String y un entero. En el String va el código SQL necesario y el entero es para indicar el número de columnas que devolverá la consulta.
- Se verifica que la consulta haya devuelto resultados.
- En este punto ya es posible recorrer el ArraList para guardarlo por ejemplo en un ComboBox.
Query consulta=new Query(); if (consulta.SelectMatch("Tabla", "NOMBRE", txtNombre.getText())==false){ consulta=new Query(); if ( consulta.Insert(Tabla+" (NOMBRE) VALUES('"+txtNombre.getText()+"')") ){ ...//Si fue insertado correctamente }else{ ... } }else{ ...//Si ya existe }
- Se crea una Variable de tipo Query
- Se ejecuta el método Query.SelectMatch(), este método recible como parámetros el nombre de la tabla, el nombre del campo a comparar y el parametro contra el cual se debe comparar el nombre del campo.
- se puede observar que se compara que el valor ingresado (parametro 3) no existe en "Tabla", si no existe se procede a insertar el registro en la base de datos.
- se reinicia la variable consulta
- se ejecuta el método Query.Insert(), que recibe como parámetro el código SQL para ma misma.
Definición de la clase "Query".
package administrador; import java.sql.*; import java.util.ArrayList; import javax.swing.JOptionPane; /** * * @author Daniel */ public class Query { private String DRIVER="com.mysql.jdbc.Driver";//mySQL private String RUTA="jdbc:mysql://localhost/temporal";//Prueba";//mySQL private String USER="root"; private String PASSWORD="daniel"; private Connection CONEXION; public Query(){ } public Query(String Driver, String Ruta, String User, String Password){ DRIVER=Driver; RUTA=Ruta; USER=User; PASSWORD=Password; } public boolean Connect(){ try{ Class.forName(DRIVER); CONEXION = DriverManager.getConnection(RUTA,USER,PASSWORD); Statement sentencia=null; sentencia=CONEXION.createStatement(); return true; }catch(ClassNotFoundException ex){ JOptionPane.showMessageDialog(null, "Driver no disponible. "+ex,"Error",JOptionPane.ERROR_MESSAGE); return false; }catch(SQLException ex){ JOptionPane.showMessageDialog(null, "Conexion a la base de datos no disponible. \n"+ex,"Error",JOptionPane.ERROR_MESSAGE); return false; } } public ArrayList<String[]> Select(String SQL, int NumColumnas){ if (Connect()){ try{ ArrayList<String[]> matResultado=new ArrayList<String[]>(); String Fila[]=new String [NumColumnas]; Class.forName(DRIVER); CONEXION = DriverManager.getConnection(RUTA,USER,PASSWORD); Statement sentencia=null; sentencia = CONEXION.createStatement(); ResultSet resultado = sentencia.executeQuery("SELECT "+SQL); while (resultado.next()) { Fila=new String[NumColumnas]; for (int x=0;x<NumColumnas;++x){ Fila[x]=resultado.getObject(x+1).toString(); } matResultado.add(Fila); } if (matResultado.isEmpty()) {return null;} return matResultado; }catch(Exception ex){} } return null; } /** * @return "true" si IDname=IDvalue en tableName * ejemplo: SELECT IDname FROM tableName WHERE IDname='IDvalue'; */ public boolean SelectMatch(String tableName, String IDname, String IDvalue){ if (Connect()){ try{ ArrayList<String> matResultado=new ArrayList<String>(); Class.forName(DRIVER); CONEXION = DriverManager.getConnection(RUTA,USER,PASSWORD); Statement sentencia=null; sentencia = CONEXION.createStatement(); ResultSet resultado = sentencia.executeQuery("SELECT "+IDname+" FROM "+tableName+" WHERE "+IDname+"='"+IDvalue+"'"); while (resultado.next()) { matResultado.add(resultado.getObject(1).toString()); } if (matResultado.isEmpty()) {return false;} return true; }catch(Exception ex){} } return false; } public boolean Insert(String SQL){ if (Connect()){ try{ Class.forName(DRIVER); CONEXION = DriverManager.getConnection(RUTA,USER,PASSWORD); Statement sentencia=null; sentencia = CONEXION.createStatement(); sentencia.execute("INSERT INTO "+SQL); return true; }catch(Exception ex){} } return false; } public void setDriver(String Drv){ DRIVER=Drv; } public void setRuta(String Rut){ RUTA=Rut; } public void setUser(String Usr){ USER=Usr; } public void setPass(String Pas){ PASSWORD=Pas; } public String getDriver(){ return DRIVER; } public String getRuta(){ return RUTA; } public String getUser(){ return USER; } public String getPass(){ return PASSWORD; } }