elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Clase para conectar a una base de datos e interactuar con ella [JDBC] Mysql
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Clase para conectar a una base de datos e interactuar con ella [JDBC] Mysql  (Leído 20,982 veces)
Pablo Videla


Desconectado Desconectado

Mensajes: 2.274



Ver Perfil WWW
Clase para conectar a una base de datos e interactuar con ella [JDBC] Mysql
« en: 29 Julio 2009, 13:46 pm »

Clase creada para interactuar con una base de datos mysql , se requiere agregar la libreria de mysql... espero que a alguien le sirva , saludos.


Código
  1. /**
  2.  *
  3.  * @author BadDevil
  4.  * Para elhacker.net
  5.  */
  6. package BD;
  7. import java.sql.Connection;
  8. import java.sql.DriverManager;
  9. import java.sql.ResultSet;
  10. import java.sql.SQLException;
  11. import java.sql.Statement;
  12.  
  13. public class BD {
  14.    private String user;
  15.    private String password;
  16.    private String url;
  17.    private String driverClassName;
  18.    private Connection conn = null;
  19.    private Statement stmt;
  20.  
  21.    public BD(String user, String password, String url, String driverClassName) {
  22.        this.user = user;
  23.        this.password = password;
  24.        this.url = url;
  25.        this.driverClassName = driverClassName;
  26.    }
  27.    public BD()
  28.    {
  29.        this.user = "root";
  30.        this.password="tupass";
  31.        this.url = "jdbc:mysql://localhost/tu_basedatos";
  32.        this.driverClassName = "com.mysql.jdbc.Driver"; // driver
  33.    }
  34.        public String getPassword() {
  35.        return password;
  36.    }
  37.  
  38.    public String getUrl() {
  39.        return url;
  40.    }
  41.  
  42.    public String getUser() {
  43.        return user;
  44.    }
  45.  
  46.    public void setPassword(String password) {
  47.        this.password = password;
  48.    }
  49.  
  50.    public void setUrl(String url) {
  51.        this.url = url;
  52.    }
  53.  
  54.    public Connection getConn() {
  55.        return conn;
  56.    }
  57.  
  58.    public void setConn(Connection conn) {
  59.        this.conn = conn;
  60.    }
  61.  
  62.    public void setDriverClassName(String driverClassName) {
  63.        this.driverClassName = driverClassName;
  64.    }
  65.  
  66.    public String getDriverClassName() {
  67.        return driverClassName;
  68.    }
  69.  
  70.    public void setUser(String user) throws SQLException {
  71.        this.user = user;
  72.    }
  73.  
  74.    public void conectar() throws SQLException {
  75.        try {
  76.            Class.forName(this.driverClassName).newInstance();
  77.            this.conn = DriverManager.getConnection(this.url, this.user, this.password);
  78.  
  79.        } catch (Exception err) {
  80.            System.out.println("Error " + err.getMessage());
  81.        }
  82.    }
  83.  
  84.    public ResultSet obtenerDatos(String sql) throws SQLException {
  85.  
  86.        this.stmt = conn.createStatement();
  87.        return this.stmt.executeQuery(sql);
  88.    }
  89.  
  90.    public void actualizar(String sql) throws SQLException {
  91.        this.stmt = conn.createStatement();
  92.        stmt.executeUpdate(sql);
  93.    }
  94.        public ResultSet ExeGet(String Q) throws SQLException{
  95.        Statement st = this.conn.createStatement();
  96.        return (ResultSet) st.executeQuery(Q);
  97.    }
  98.    public int Exe(String Q) throws SQLException{
  99.        Statement st = this.conn.createStatement();
  100.        return st.executeUpdate(Q);
  101.    }
  102.  
  103.    public void Off() throws SQLException{
  104.         this.conn.close();
  105.    }
  106.  
  107.  
  108.  
  109. }
  110.  


En línea

rigoxls

Desconectado Desconectado

Mensajes: 57



Ver Perfil
Re: Clase para conectar a una base de datos e interactuar con ella [JDBC] Mysql
« Respuesta #1 en: 29 Julio 2009, 14:02 pm »

A mi me sirve, gracias, voy a ver si implementandola agilizo un poco las consultas, actualmente el metodo que uso me toma al rededor de 25 segundos para generar reportes, consultas etc...

gracias...


En línea

No hay verdades absolutas sin ciegas posiciones !!!
Pablo Videla


Desconectado Desconectado

Mensajes: 2.274



Ver Perfil WWW
Re: Clase para conectar a una base de datos e interactuar con ella [JDBC] Mysql
« Respuesta #2 en: 29 Julio 2009, 14:20 pm »

No hay problema, trata de usar una clase controladora que llame a los metodos desde una clase aparte ... asi tendras mas control de las consultas sql y se vera mas ordenado.
En línea

Anibal784


Desconectado Desconectado

Mensajes: 762

Yo no la vote, pero me la tengo que aguantar igual


Ver Perfil WWW
Re: Clase para conectar a una base de datos e interactuar con ella [JDBC] Mysql
« Respuesta #3 en: 29 Julio 2009, 15:43 pm »

Hay un par de cosas que no me convencen.

¿para qué querría hacer un getPass()?,
en tu clase, tienes un setConn, el cual es medio ilógico, no terminás encapsulando nada, supongamos que seteo todo, el pass, el user, la url, etc. y luego en lugar de conectar hago un setConn con una conexión anterior que no se condicen con todos esos datos seteados antes.

¿qué pasa si hago un actualizar() sin antes haber hecho un conectar()?, explota porque conn va a estar en null y no se le puede enviar un mensaje a null.

Lo que puedes hacer para que quede mejor, desde mi punto de vista, es, cada vez que seteas un parámetro intentes de nuevo la conexión, por ejemplo, cambias el user, en ese mismo intentar conectarte de nuevo o por lo menos cerrar la conexión actual pues ya no es válida, ésta me parece la mejor opción, luego, cada vez que intentes una consulta, ver si se está conectado, si no se está probar conectarse y luego si se tiene éxito hacer la consulta, o bien lanzar la excepción de que no se está conectado o algo así.
En línea

El que llega sin que lo llamen, se va sin que lo echen.

Citar
Vos no la votaste por eso la tenes adentro.
Lo fino no es lo tuyo, y a mi me chupa un huevo, soy argentino y no peronista, y eso es lo que realmente te molesta.
Pablo Videla


Desconectado Desconectado

Mensajes: 2.274



Ver Perfil WWW
Re: Clase para conectar a una base de datos e interactuar con ella [JDBC] Mysql
« Respuesta #4 en: 29 Julio 2009, 15:49 pm »

Hay un par de cosas que no me convencen.

¿para qué querría hacer un getPass()?,
en tu clase, tienes un setConn, el cual es medio ilógico, no terminás encapsulando nada, supongamos que seteo todo, el pass, el user, la url, etc. y luego en lugar de conectar hago un setConn con una conexión anterior que no se condicen con todos esos datos seteados antes.

¿qué pasa si hago un actualizar() sin antes haber hecho un conectar()?, explota porque conn va a estar en null y no se le puede enviar un mensaje a null.

Lo que puedes hacer para que quede mejor, desde mi punto de vista, es, cada vez que seteas un parámetro intentes de nuevo la conexión, por ejemplo, cambias el user, en ese mismo intentar conectarte de nuevo o por lo menos cerrar la conexión actual pues ya no es válida, ésta me parece la mejor opción, luego, cada vez que intentes una consulta, ver si se está conectado, si no se está probar conectarse y luego si se tiene éxito hacer la consulta, o bien lanzar la excepción de que no se está conectado o algo así.

Asi es , tienes toda la razon cada vez que hay que usar un metodo hay que llamar al conectar , yo solo les dejo la clase , ustedes pueden hacer lo que quieran con ellla , esa es la idea  :P
En línea

Anibal784


Desconectado Desconectado

Mensajes: 762

Yo no la vote, pero me la tengo que aguantar igual


Ver Perfil WWW
Re: Clase para conectar a una base de datos e interactuar con ella [JDBC] Mysql
« Respuesta #5 en: 29 Julio 2009, 16:00 pm »

es que entonces tu clase no me sirve de nada, carece de sentido, supongamos que hago un código algo así:
Código
  1. BD db = new BD("usuario", "pass", "url://noseque", "driver...");
  2. db.obtenerDatos("consulta sql");
  3.  
  4. if(condicion){
  5.    db.setUser("anibal");
  6.    db.actualizar("otra consulta sql");
  7. }
  8.  
  9.  
ahí cambié el usuario, o sea me conecto con otro usuario y por torpeza me olvidé de hacer conectar, ejecuto otra consulta, pero la segunda consulta se hará sobre la conexión anterior. Pongamos el ejemplo de que "usuario" únicamente puede leer, o sea no puede hacer actualizar, tonces me conecto con "anibal" para hacer esa actualización, ¿sabés lo difícil que va a ser encontrar el error?.
Está bien, dudo el por qué querría hacer algo así, pero tu clase lo permite, a eso voy, a que puedes mejorar la clase, abstrayendo más, si quieres obligar a que cada vez que se cambie el usuario se deba hacer un conectar, cierra la conexión anterior, carece de sentido mantenerla pues haz cambiado el usuario.
En línea

El que llega sin que lo llamen, se va sin que lo echen.

Citar
Vos no la votaste por eso la tenes adentro.
Lo fino no es lo tuyo, y a mi me chupa un huevo, soy argentino y no peronista, y eso es lo que realmente te molesta.
Pablo Videla


Desconectado Desconectado

Mensajes: 2.274



Ver Perfil WWW
Re: Clase para conectar a una base de datos e interactuar con ella [JDBC] Mysql
« Respuesta #6 en: 29 Julio 2009, 16:06 pm »

Es por eso que debes hacer un controlador , ahi lo dije , esta es una clase solo para conectar a la base datos y hacer consultas , debes hacer un controlador de la clase para manejarlo bien.... la clase si sirve , yo la uso .... hace tu propio controlador , yo tengo uno , solo publique la clase que conectara a la base de datos con metodos simple , alla tu que haces con ella.
En línea

Amerikano|Cls


Desconectado Desconectado

Mensajes: 789


[Beyond This Life]


Ver Perfil WWW
Re: Clase para conectar a una base de datos e interactuar con ella [JDBC] Mysql
« Respuesta #7 en: 29 Julio 2009, 20:57 pm »

Esta ya la habia hecho, pero muchas gracias por el aporte!!  :xD :xD
En línea





Mi blog:
http://amerikanocls.blogspot.com
sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: Clase para conectar a una base de datos e interactuar con ella [JDBC] Mysql
« Respuesta #8 en: 1 Agosto 2009, 22:42 pm »

esa clase ya existe y se llam rowset
En línea

Pablo Videla


Desconectado Desconectado

Mensajes: 2.274



Ver Perfil WWW
Re: Clase para conectar a una base de datos e interactuar con ella [JDBC] Mysql
« Respuesta #9 en: 1 Agosto 2009, 23:45 pm »

esa clase ya existe y se llam rowset

La clase la cree yo , si fuera de otra persona colocaria los creditos , es una clase que hice en mi carrera
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines