¿Podemos hacer una clase de conexión a la base de datos que nos permita simplemente cambiar el archivo de configuración y luego usar la base de datos? Hice el prototipo de esta clase que es muy simple. Pero la idea es buena, siempre use un archivo jar muy simple para obtener la base de datos de configuración que luego puede realizar operaciones de consulta SQL.
package com.programcreek.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 a la clase DB:
package com.programcreek.test; import java.io.IOException; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; import com.programcreek.db.DB; public class Main { public static void main(String []args){ // to read url, username, password from configuration file 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(); } //instantiate a DB object 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 debería poder:
1) conecte diferentes bases de datos como SQLServer, Accsss, etc.
2) tiene función como runDB (), que puede realizar operaciones ADD, UPDATE, DELETE usando una matriz. Tome update, por ejemplo, runDB (UPDATE, data), en el que los datos son una matriz de mapeo.
3) tiene función de registro usando lo que mostré en mi publicación anterior.