// ******************** // // * dbFunctions.java * // // ******************** // package ezWeb.JDBC; import java.sql.*; // Conector JDBC import java.text.*; import java.io.*; /** * Esta clase es usada para dar conectividad con la base de satos PostGresSQL.
* Contiene métodos para conectividad, consultas y escritura.
* * @author Rodrigo Toro Olmedo * @version version 0.1 30-04-2005 */ public class dbFunctions { //----------- Atributos de la Clase. ------------ /** * Descriptor de la Base de Datos. */ private Connection db; /** * Declaración de la Base de Datos. */ private Statement sql; /** * MetaData de la Base de Datos. */ private DatabaseMetaData dbmd; /** * Nombre de la Base de datos a conectar. */ final static private String dbName = "ezproscout"; /** * Usuario dueño de la Base de datos a conectarse. */ final static private String dbUsername = "postgres"; /** * Contraseña del usuario dueño de la base de datos a conectarse. */ final static private String dbPassword = "javas"; /** * flag de administrador */ private boolean IsAdmin; /** * String para debug. */ private String connstat; //------------------------------------------------ // Constructor //------------------------------------------------ public dbFunctions() /** * Constructor. Instancia una BD e inicializa sus atributos. */ { Connection db = null; Statement sql = null; DatabaseMetaData dbmd = null; boolean IsAdmin = false; String connstat = null; } //------------------------------------------------ // Metodos Públicos //------------------------------------------------ /** * Método tipo para conectarse a la base de datos. */ public void dbConnect() throws ClassNotFoundException, SQLException { Class.forName("org.postgresql.Driver"); //carga el driver try { db = DriverManager.getConnection("jdbc:postgresql://127.0.0.1/"+dbName, dbUsername, dbPassword); connstat="se conecta"; } catch(SQLException e) { connstat="no se conecta"; } dbmd = db.getMetaData(); //obtiene MetaData para confirmar conexión sql = db.createStatement(); //crea una declaración para ser usada más tarde } /** * Método para insertar un usuario, solo para el administrador del sistema. * @param NewUsr Usuario a insertar. * @param NewPasswd Clave del usuario. */ public void dbInsertUsr(String NewUsr, String NewPasswd) throws ClassNotFoundException, SQLException { String sqlText="INSERT INTO usuarios VALUES('"+NewUsr+"', '"+NewPasswd+"')"; //System.out.println("Executing this command: "+sqlText+"\n"); sql.executeUpdate(sqlText); } /** * Método para comprobar información del usuario desde la base de datos. * @param usr Usuario. * @param passwd Clave del usuario. * @return Verdadero si existe el usuario. */ public boolean dbQueryUsr(String usr, String passwd) throws ClassNotFoundException, SQLException { String tusr,tpswd; ResultSet results = sql.executeQuery("SELECT * FROM usuarios WHERE usuario='"+usr+"'"); while(results.next()) { tusr=results.getString(1); tpswd=results.getString(2); if (tpswd.compareTo(passwd)==0 && tusr.compareTo(usr)==0) { if (tusr.compareTo("admin")==0) { IsAdmin=true; } else { IsAdmin=false; } return true; } } return false; } /** * Método para comprobar si el usuario es el administrador. * @return Verdadero si es administrador. */ public boolean dbQueryAdmin () { return IsAdmin; } /** * Método para ver si el usuario ya existe en la base de datos. * @param usr Usuario. * @param table tabla de la base de datos. * @return Verdadero si existe. */ public boolean dbUserExist(String usr, String table) throws ClassNotFoundException, SQLException { ResultSet results = sql.executeQuery("SELECT * FROM "+table+" WHERE usuario='"+usr+"'"); while(results.next()) { usr=results.getString(1); if (usr.compareTo(usr)==0) { return true; } } return false; } /** * Métodos para insertar datos en la base de datos.
* Si ya existen datos, los actualiza. * @param usr Usuario. * @param table tabla de la base de datos. * @param data Valores a insertar en la tabla. */ public void InsertData(String usr, String table, String [] Data) throws ClassNotFoundException, SQLException { if (this.dbUserExist(usr,table)==true) { String sqlText="UPDATE " +table+ " SET"; sqlText=sqlText+" nombre='" +Data[1]+ "', "; sqlText=sqlText+" responsable='" +Data[2]+ "', "; sqlText=sqlText+" descripcion='" +Data[3]+ "', "; sqlText=sqlText+" objetivos='" +Data[4]+ "', "; sqlText=sqlText+" plazo='" +Data[5]+ "', "; sqlText=sqlText+" avance='" +Data[6]+ "' "; sqlText=sqlText+"WHERE usuario='" +usr+ "'"; sql.executeUpdate(sqlText); } else { String sqlText="INSERT INTO "+table+" VALUES("; for (int i=0; i<6; i++) { sqlText=sqlText + "'" + Data[i]+"', "; } sqlText=sqlText+"'"+Data[6]+"')"; sql.executeUpdate(sqlText); } } /** * Método para hacer consultas generales a la base de datos. * @param usr Usuario. * @param table tabla de la base de datos. * @param campo Columna de la tabla a consultar. * @return Resultado de la consulta. */ public String QueryData(String usr, String table, String campo) throws ClassNotFoundException, SQLException { String QData=null; ResultSet results = sql.executeQuery("SELECT * FROM "+table+" WHERE usuario='"+usr+"'"); while(results.next()) { QData = results.getString(campo); } return QData; } }