// ******************** //
// * 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;
}
}