lunes, 22 de agosto de 2016

Prototipo de clase de base de datos de Java

¿Podemos hacer una clase de conexión de base de datos que nos permite cambiar sólo el archivo de configuración y luego utilice la base de datos? Hice el prototipo de esta clase que es muy sencillo. Pero la idea es buena, siempre uso un archivo jar muy simple para obtener la base de datos configuración que luego puede hacer operaciones de consulta SQL.
package com.developer.db;
import java.sql.*;
 
public class DB {
 
 private Connection conn = null;
 
 public DB(String url, String user_name, String password) {
  try {
   Class.forName("com.mysql.jdbc.Driver");
   conn = DriverManager.getConnection(url, user_name, password);
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (ClassNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 
 public ResultSet runSql(String sql) throws SQLException {
  Statement sta = conn.createStatement();
  return sta.executeQuery(sql);
 }
 
 @Override
 protected void finalize() throws Throwable {
  if (conn != null && !conn.isClosed()) {
   conn.close();
  }
 }
 
}
Aquí está el código para llamar la clase DB:
package com.developer.test; 
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
 
import com.developer.db.DB;
 
public class Main {
 
 public static void main(String []args){
 
  // leer url, username, password de archivo de configuración
  Properties configFile = new Properties();
  String url = "";
  String user_name = "";
  String password = "";
  String database = "";
  try {
   configFile.load(Main.class.getClassLoader().getResourceAsStream("config.properties"));
   url = configFile.getProperty("url");
   database = configFile.getProperty("database");
   user_name = configFile.getProperty("user_name");
   password = configFile.getProperty("password");
  } catch (IOException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
  }
 
  //instancia objecto DB
  DB db = new DB(url + database, user_name, password);
  try {
   ResultSet rs = db.runSql("select * from user");
   while(rs.next()){
    System.out.println(rs.getString("user_name"));
   }
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
}
Este es el prototipo de esta idea, una clase de conexión de base de datos completa debe ser capaz de: 

1) conectar base de datos como SQLServer, Accsss, etc. 

2) tiene la función como runDB(), que puede Agregar, actualizar, eliminar las operaciones mediante una matriz. Tome la actualización por ejemplo, runDB (actualización, datos), en que los datos están una matriz de asignación. 

3) tiene la función de registro con lo que yo he mostró en el post anterior.

0 comentarios:

Publicar un comentario