How to: Conectarse a mySQL con Java

Buenas noches a todos ustedes aficionados a Java!(asi como yo), esta noche les enseñare como hacer una simple consulta a una base de datos mediante el conector JDBC y mySQL, el conector lo bajamos desde aqui (bajen el zip), y lo unico que hacemos es agregar el .jar al proyecto en netbeans, en add JAR en el apartado de librerias(si no sabes como pregunta a google), comencemos =D.

En esta ocacion usaremos la clase JTable y DefaultTableModel, espero ya las hayas utilizado antes, en el formulario de netbeans agregamos el JTable y un JBotton como se muestra :

Diseño a usar

Cuando agregas la tabla netbeans te pone un modelo por defecto, este se lo quitamos en las propiedades y borramos todas las filas y columnas quedando asi:

Ahora, ya que hayamos importado la libreria del conector que ya descargaron y teniendo ya nuestro JFrame con su tablita y boton haremos lo siguiente:
importamos todas las siguientes librerias que vamos a usar

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.table.DefaultTableModel;

y declaramos lo siguiente

//URL de la base de datos
static final String URL_BASEDATOS = "jdbc:mysql://127.0.0.1:3306/sakila";
private Connection conexion;
private Statement instruccion;
private ResultSet conjuntoResultados;
DefaultTableModel modelo;

Ok, aqui en la constante URL_BASEDATOS estamos asignando la direccion de nuestro servidor de mySQL y la base de datos a la cual nos vamos a conectar, en mi caso es sakila. conexion, instruccion y conjuntoResultados nos serviran para manejar la conexion a la BD el query que vamos a hacer y obtener el resultado de la query, y modelo para manejar nuestra JTable.Bueno empezemos con el coding:

Hagamos un metodo que se llame “conectarse”.

Les he dejado todo comentado como explicacion, en la cadena “tupass” y “root” ahi van la info que usan ustedes para usar mySQL en su PC, el password y el usuario que usan para conectarse.Ok si todo va bien, ya estaremos conectados a nuestra base de datos! la cual la mia es Sakila ( la pueden bajar, es comun entre los estudiantes).

Despues de que ya hicimos este metodo lo mandamos a llamar en nuestro constructor y tambien primero que nada hay que asignarle el modelo a nuestra JTable(casi lo olvidaba), esto va en el constructor y es muy simple.

public SakilaJtable() {
initComponents();
conectarse();
modelo = new DefaultTableModel();
jTable1.setModel(modelo);
   }

Ok, ya tenemos nuestra conexion a la BD, tenemos nuestra tabla con su modelo( que no tiene nada), ahora sigue la consulta, y la haremos de la siguiente manera.Con el boton que pusimos, le agregamos un AcionEvent con el siguiente codigo:

Bueno aqui viene lo bueno y espero explicarme bien, conjuntoResultados quedamos que sirve para manejar lo que nos devuelva la consulta no?, encontes en executeQuery agregamos la consulta que queremos hacer, en este caso estoy eligiendo 2 campos, entonces se que son 2 columnas las que me devolvera la consulta, entonces ResultSetMetaData nos ayuda a obtener informacion de la consulta, en este caso la hacemos para obtener los nombres de las columnas y el numero de ellas ( pero ya se que son 2 duh ) pero en fin esto nos servira de algo, en el ciclo for agrego las 2 columnas, que seran first_name y last_name, con el metodo de mi modelo de la tabla agrego las 2 columnas. En el ciclo while conjuntoResultados.next() es como un apuntador al primer dato de nuestra consulta, imaginemos nuestra tabla, y .netxt() nos envia a la primera fila, y asi con  el metodo de nuestro modelo  .addRow() agregamos un arreglo Object (el papa de todos los datos en Java, osea puede ser string, int etc uds saben mas que yo) entonces con getObject(int n) nos devuelve el dato que esta en la columna n, de la fila actual. Entonces estamos agregando 2 campos a la fila actual.

Resumen (ya que no me explico muy bien):

Importamos nuestro driver de mySQL.

Agregamos JTable yJButton.

Creamos el modelo de nuestro JTable con DefaultTableModel y se lo agregamos a nuestra JTable.

Iniciamos la conexion a mySQL con Conection y DriveManager e inicializamos la el objeto para la consulta(Statement).

Una vez conectados hacemos la consulta y la agregamos con nuestro modelo.

Y este es nuestro resultado:

Espero y les sea te utilidad, son 2 simples metodos analizenlos y pregunten si tienen dudas!, con esto puedes hacer mas cosas hecha andar tu imaginacion!

Saludos!

Anuncios

14 comentarios sobre “How to: Conectarse a mySQL con Java

  1. hola que tal, yo tengo una pregunta no soy un experto en java pero espero me puedas resolver mi duda. tengo una consulta para saber el valor de mi columna que corresponde a un dato especifico ejemplo tengo. id nombre, esas son mis columnas y sus datos van del 1,2,3 en id y jose,juan,andres en nombre. la pregunta es como puedo acceder al dato 1 que sea jose, al dato 2 q es andres y asi a cada dato de mi tabla, pero puedo empezar por el 3 q es andres, luego el 1 que es jose, esta consullta es aleatorea, lo que me interesa es como puedo sacar el valor de esa columna nombre que corresponde al id, uso getString(“Nombre”); espero me halla explicado bien gracias.

  2. Mira con el metodo getString(String columna) obtienes el dato que esta en la columna que pones “nombre” verdad?, pero antes de eso tienes que llamar al metodo next(), para irte a la primera hilera y luego ya el getString(), y luego tienes que volver a llamar el metodo next(), para irte a la siguiente hilera ( si es que la hay) y asi sucesivamente,lo que puedes hacer es obtener los 3 valores y guardarlos en un arreglo y posteriormente usarlos, para hacer una sola consulta, talvez no entendi muy bien tu problema pero hay me dices!, saludos.

  3. ¡Gracias! ¡De verdad, muchísimas gracias!
    Ya he conseguido lo que necesito, pero igual voy a estudiar y analizar tu código, pues soy un noob aún =(.
    Salu2 desde Lima.

  4. hola men!segui lo que me tienes en tu tutorial,pero al parecer me marca errores en las llaves no se por que!

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.sql.Statement;
    import javax.swing.table.DefaultTableModel;
    public class tablas{
    public static void main(String args[]){
    //URL de la base de datos
    static final String URL_BASEDATOS = “jdbc:mysql://127.0.0.1:3306/sakila”;
    private Connection conexion;
    private Statement instruccion;
    private ResultSet conjuntoResultados;
    DefaultTableModel modelo;

    public void conectarse(){
    conexion=null;
    instruccion=null;
    conjuntoResultados=null;
    Conexion con = new Conexion();
    String user=”root”;
    String pass=”12345″;

    try {

    conexion=DriverManager.getConnection(url,user,pass);
    instruccion = con.createStatement();

    }catch (Exception e) {
    JOptionPane.showMessageDialog(null, “Error ” + ee.getMessage(), “”, JOptionPane.INFORMATION_MESSAGE);
    }
    }
    public SakilaJtable() {
    initComponents();
    conectarse();
    modelo = new DefaultTableModel();
    jTable1.setModel(modelo);
    }

    private void jButtonActionPerformed(java.awt.event.ActionEvent evt){

    try{

    conjuntoResultados=instruccion.executeQuery(“SELECT *FROM categoria”);
    ResultSetMetadata metaDatos=conjuntoResultados.getMetaData();
    int numeroDeColumnas=metaDatos.getColumnCount();
    for(int i=1;i<=numeroDeColumnas;i++){
    modelo.addColumn(metaDatos.getColumnName(i));
    }
    while(conjuntoResultados.next()){
    modelo.addRow(new Object[]{conjuntoResultados.getObject(1),conjuntoResultados.getObject(2));

    }
    }catch(SQLException sql){
    sql.printStackTrace();
    }

    1. Buenas man!, mira vamos viendo a ver si no andas un poco perdido, veo que tu clase no hereda de un JFrame, no hiciste un JFrame y diseñarlo con netbeans?.

      El problema de las llaves se encuentra en el metodo Main, fijate que inicias declarando otro metodo y no has cerrado ninguna llave!

      Otro error que detecto es que el constructor no se llama igual que la clase.
      Mira te envio el proyecto para que lo analizes! pero no solo lo copies! preguntame cualquier cosa que no entiendas, con esta condicion te paso el proyecto!
      En el proyecto busca la clase SakilaJTable y es este ejemplo, tengo otros 3 ejemplos mas por si gustas verlos y preguntarme cualquier duda

      Baja el proyecto: http://dl.dropbox.com/u/9043876/Librerias%20Java/SakilaProject.rar

  5. Buenas men,gracias por compartir mira!tu clase que no sabia hacer!la implemente de otra manera me la he estado pasando practicando y ahora ya le entiendo a cuando publique eso jajaa,la practica hace al maestro jeje,bueno dejame lo veo,okas,y respeto la ley del crack que dice “dont copy,mejora y supera”jeje,y bueno ya aprovechando la ocasion tengo un programa,desarrolo una aplicacion empresarial y ps me estoy volviendo loco con mx informacion,mira lo que yo quiero hacer es:

    bueno de esta manera declaras tu data y tus columns para pasarselos a tu DefaultTableModel y se lo asignas en tu JTable osea si:
    Object rows [][] = { { “A” , “About” , 44.36 } , { “B” , “Boy” , 44.84 } , { “C” , “Cat” , 463.63 } ,
    { “D” , “Day” , 27.14 } , { “E” , “Eat” , 44.57 } , { “F” , “Fail” , 23.15 } ,
    { “G” , “Good” , 4.40 } , { “H” , “Hot” , 24.96 } , { “I” , “Ivey” , 5.45 } ,
    { “J” , “Jack” , 49.54 } , { “K” , “Kids” , 280.00 } } ;
    String columns [] = { “NOMBRE” , “DESCRIPCION” , “PRECIO” } ;
    TableModel model =
    new DefaultTableModel ( rows, columns ) {//aqui esto es lo que quiero

    pero de esa manera solo los declaro,pero yo queria algo como esto:
    Object rows [][] = { {}}; //aqui esta el problema el rows por que son los datos que contienen tu base de datos y los quiero mostrar,pero no se como no se si exista algun metodo para psar el parametro con jdbc
    String columns [] = { “NOMBRE” , “DESCRIPCION” , “PRECIO” } ;//aqui no hay problema
    TableModel model =
    new DefaultTableModel ( rows, columns ) {//aqui necesito pasarle los oparametros de esta manera al defaultable model,
    No se si mi pregunta,es algo tonta,pero eso me tiene locooooooo matandome en encontrarle bueno saludos y vere tu proyecto,pero como dice “ley del crack”jeje saludos men y gracias!!

  6. uyyy menn ya lo proveee y me marca ahora un error,me dice driver not found y solo agregue sta linea en el conect
    solo registre el driver y listo
    DriverManager.registerDriver(new org.gjt.mm.mysql.Driver());
    saludos…

  7. Hola, tengo una duda, he probado el codigo que publicaste pero en eclipse (creando un jframe y dentro de ello un jtable) y m sale errores en addColumn y addRow, no se sipodrias ayudarme en ello. Gracias

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s