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


 


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  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 12,610 veces)
DonVidela


Desconectado Desconectado

Mensajes: 1.906



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

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

Aprendiendo: Java , C# , pl/sql, mysql , sql server, PHP , Access, JSF, Facelets, JSP, CakePHP, JQuery, Perl, Android

http://pablovidela.wordpress.com
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 »

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 !!!
DonVidela


Desconectado Desconectado

Mensajes: 1.906



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 »

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

Aprendiendo: Java , C# , pl/sql, mysql , sql server, PHP , Access, JSF, Facelets, JSP, CakePHP, JQuery, Perl, Android

http://pablovidela.wordpress.com
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 »

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.
DonVidela


Desconectado Desconectado

Mensajes: 1.906



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 »

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

Aprendiendo: Java , C# , pl/sql, mysql , sql server, PHP , Access, JSF, Facelets, JSP, CakePHP, JQuery, Perl, Android

http://pablovidela.wordpress.com
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 »

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.
DonVidela


Desconectado Desconectado

Mensajes: 1.906



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 »

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

Aprendiendo: Java , C# , pl/sql, mysql , sql server, PHP , Access, JSF, Facelets, JSP, CakePHP, JQuery, Perl, Android

http://pablovidela.wordpress.com
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 »

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: 559



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 »

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

DonVidela


Desconectado Desconectado

Mensajes: 1.906



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 »

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

Aprendiendo: Java , C# , pl/sql, mysql , sql server, PHP , Access, JSF, Facelets, JSP, CakePHP, JQuery, Perl, Android

http://pablovidela.wordpress.com
sapito169


Desconectado Desconectado

Mensajes: 559



Ver Perfil
Re: Clase para conectar a una base de datos e interactuar con ella [JDBC] Mysql
« Respuesta #10 en: 2 Agosto 2009, 01:39 »

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

no dije tu nop la creaste
lo que quise decir es que ay una clase que te ase lo mismo ya echa llamada rowset
En línea

DonVidela


Desconectado Desconectado

Mensajes: 1.906



Ver Perfil WWW
Re: Clase para conectar a una base de datos e interactuar con ella [JDBC] Mysql
« Respuesta #11 en: 2 Agosto 2009, 01:43 »

ahh ok, sorry por el mal entendido  :P
En línea

Aprendiendo: Java , C# , pl/sql, mysql , sql server, PHP , Access, JSF, Facelets, JSP, CakePHP, JQuery, Perl, Android

http://pablovidela.wordpress.com
Debci
Moderador
***
Desconectado Desconectado

Mensajes: 2.016


Actualizate o muere!


Ver Perfil WWW
Re: Clase para conectar a una base de datos e interactuar con ella [JDBC] Mysql
« Respuesta #12 en: 2 Agosto 2009, 16:46 »

jeje se parece a loq ue yo hice con vuestra bayuda para comprobar un loggin, en nada os pongo una clase para ftp.

saludos
En línea

dave0307

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Clase para conectar a una base de datos e interactuar con ella [JDBC] Mysql
« Respuesta #13 en: 26 Febrero 2010, 23:49 »

Hola solo una pregunta me gustaria saber cual es la contraparte del código es decir lo que iria en el JFrame para mandarle datos a la clase porfa me interesa mucho saber de esto.
En línea

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

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Uso de dbExpress con Borland C++ para conectar con MySQL
Programación C/C++
borlandev 0 2,332 Último mensaje 9 Diciembre 2010, 03:01
por borlandev
conectar base de datos mysql en w7 (solucionado)
Programación C/C++
el_porra 1 1,471 Último mensaje 15 Septiembre 2011, 17:33
por el_porra
Conectar FreeRadius a base de datos en mysql
GNU/Linux
abelcs87 1 618 Último mensaje 23 Junio 2012, 20:17
por lnvisible
Alguien sabe como puedo conectar PHP con mi base de datos (MySQL)?
Bases de Datos
ConocimientoExterno 1 351 Último mensaje 16 Junio 2013, 14:14
por #!drvy
Conectar PDO a JDBC
PHP
ZeroVzla 1 171 Último mensaje 16 Septiembre 2013, 01:26
por ~ Yoya ~
Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines