Conectar a BD en MySQL por JSP

Luego de, casi unas 4 horas de exhaustiva lectura logré conectarme a la base de datos de MySQL desde un JSP.

Fue, literalmente, una tortura… pero al fin logré la conexión. Como lo hice ?? Ps sigue leyendo 😉

Tengo que advertir, estuve toda la tarde tratando y tratando por varias partes. Por lo tanto, no se si lo que estoy escribiendo es exactamente lo que se necesita… Puede que algunos pasos estén de más, puede que otros falten 😯 … en fin 😀

Entonces, vamos por parte.

  1. Hacemos una BD con cualquier tabla, y con cualquier dato. Es solo para probar la conexión y leer algo.
  2. Bajamos el conector desde MySQL (el conector para Java osviamente 😯 ).  Independientemente de si fue el zip o el tar.gz, lo descomprimimos. Movemos el .jar (en mi caso mysql-connector-java-5.1.12-bin.jar)  lo pegamos, por ejemplo, en «C:\Program Files (x86)\Java\jre1.6.0_05\lib»
  3. Ahora, vamos a NetBeans. Y agregamos el conector como una nueva librería. NetBeans->Menu->Libraries.
    Click en «New Library» y le damos el nombre MySQL como una clase.Screenshot - 29_04_2010 , 23_33_52 Después, le damos click en «Add Jar/Folder» y buscamos el .jar que movimos. Screenshot - 29_04_2010 , 23_35_49
  4. Ahora, agregamos la librería al proyecto. (Me estoy dando cuenta de que, al parecer, no eran necesarios los pasos anteriores. Como ven en la imagen, tenía anteriormente la librería MySQL JDBC Connector… De todas formas, elijan mejor el MySQL JDBC 😀 Screenshot - 29_04_2010 , 23_39_23
  5. En el archivo JSP, hacemos un import de «java.sql.*» con <%@page import="java.sql.*" %>
  6. En el body, escribimos lo siguiente (cambiando los datos para su base de datos, el usuario, y la contraseña):
    <%try{
    Class.forName("com.mysql.jdbc.Driver");
    Connection conexion=DriverManager.getConnection
    ("jdbc:mysql://127.0.0.1/NombreBD","USER","PASS");
    out.println("Conexión realizada con éxito a: "+conexion.getCatalog());
    conexion.close();
    } catch(SQLException ex)
    { %>
    <%="Se produjo una excepción durante la conexión:"+ex%>
    <%} catch(Exception ex){ %>
    <%="Se produjo una excepción:"+ex%>
    <%}%>
  7. Listo, ahora lo hacemos correr con un f6 y listo. Deberíamos estar conectados a nuestra BD. Screenshot - 29_04_2010 , 23_51_28

Entonces, como funciona:

  1. La clase «ManagerDiver» tiene una especie de lista con todos los drivers. Usamos «Class.forName» para decirle específicamente cual driver queremos usar. En este caso, es el de MySQL.
  2. Conectamos el Driver de jdbc con mysql. Dando el host, el nombre de las BD, usuario, etc.
  3. Comprobamos que esta conectado, leyendo el nombre de la BD. Si todo esta bien, cerramos la conexión con «conexion.close();  En caso de haber un error de SQL, cargamos la SQLException. Y si el error no esta relacionado con SQL, captamos una Exception.

Ahora, vemos si podemos leer algún dato.

Recuerdan la tabla del registro anterior? Era algo como:
CREATE TABLE proyec.dusuarios (
rut VARCHAR(8) NOT NULL,
nombre VARCHAR(50) NOT NULL,
apellido VARCHAR(35) NOT NULL,
local VARCHAR(20) NOT NULL,
PRIMARY KEY (rut)
) ENGINE = MyISAM ROW_FORMAT = DEFAULT;

Esa tabla tiene 2 registros:

  • 87654321 Pedro Pablo Perez Pereira arica
  • 12345678 Mario Andres Cares Cabezas iquique

Ok entonces ahora agregamos estas líneas al archivo JSP:

Statement consulta=conexion.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs=consulta.executeQuery("SELECT * FROM dusuarios");
rs.afterLast();
boolean seguir=rs.previous();%>
<table border="1">
<%while(seguir){
%>
<tr/><td>RUT: <%=rs.getString(1)+" | Nombres: "+rs.getString(2)+" | Apellidos: "+
rs.getString(3)+" | Sucursal: "+rs.getString(4)
></td></tr>
<%seguir=rs.previous(); }%>
</table>
<%
rs.close();
consulta.close();
conexion.close();
}

Eso debería ser todo 😉 El código me costó entenderlo, pero básicamente creamos el objeto consulta para guardar el query. Luego, se crea el objeto rs para guardar lo que nos entregue la query.
Después, vamos a la posición última + 1 del registro de rs. En este caso son 2 registros, por lo quedamos en la posición 3. Esta posición no «existe», pero en la siguiente acción, regresamos una posición (volviendo a quedar en el último registro. rs.previous(); devuelve un valor booleano. Es posible retroceder, por lo que «seguir» tiene valor 1 (true).
Con «seguir» de valor 1, entramos al ciclo while. Una vez dentro, empezamos a escribir los registros.
Luego, volvemos a retroceder una posición. Y regresamos al ciclo while. Cuando lleguemos al 1º registro, no podremos retroceder. En este punto, cortamos el ciclo while :pScreenshot - 30_04_2010 , 2_01_31

Cambiando entre rs.beforeFirst() y rs.afterLast(); podemos ordenar los registros. DESC o ASC. Depende de como usen 😉
Screenshot - 30_04_2010 , 2_12_23
Eso sería todo. Mañana sigo investigando. 😉

Acerca de MaritoCares

Ingeniero Informático. Con tendencias a la programación en [C#, VB].NET, Java(Web principalmente...), PHP, JavaScript, algo mínimo de [ruby, python], y el clásico C.
Esta entrada fue publicada en Uncategorized. Guarda el enlace permanente.

14 respuestas a Conectar a BD en MySQL por JSP

  1. CARRARO dijo:

    Excelente información.

    Hacer una aplicación JAVA es mucho más DIFICIL que hacer otra en PHP,FLASH,etc.

    • MaritoCares dijo:

      Hola 🙂
      Ps para gustos los colores (dicen 😯 )

      Hacer una aplicación en Java es más seguro, corre más rápido, y tiene más estilo (xD )

      La verdad es que nunca he creado una aplicación (propiamente tal) en Flash… creo que lo más parecido que hice fue algo en SilverLight 😀

      Y PHP es genial por lo rápido que haces escribes, y de todas formas, la mayoría de los servidores vienen con PHP (nunca he visto no con GlassFish para correr java o ruby, por ejemplo…)

      Saludos Carraro 😉

  2. ruben dijo:

    intente hacer lo mismo, con mi propio codigo pero algo no jalo, creo que no copiaste por completo tu codigo, podrias pasarme completo tu jsp para guiarme? porfa me urge…

    gracias…

    • MaritoCares dijo:

      Chutas ruben… resulta que ya no uso MySQL… me cambié a PGSQL y no tengo el archivo a la mano…

      Como dices, no copié todo el código… simplemente lo necesario para que armes tu propia aplicación.

      De todas formas, dime qué es lo que no te funciona y trataré de ayudar 🙂

      • Davys dijo:

        A mi no me funciona esta parte del codigo :c lo peque dentro del body al igual que la conexión

        Statement consulta=conexion.createStatement(
        ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
        ResultSet rs=consulta.executeQuery(«SELECT * FROM dusuarios»);
        rs.afterLast();
        boolean seguir=rs.previous();%>

        RUT:

        <%
        rs.close();
        consulta.close();
        conexion.close();
        }

  3. Anónimo dijo:

    muchas gracias!!! me calente mucho la cabeza para logralo

  4. Anónimo dijo:

    Muy bueno, funciona perfecto.

  5. MaritoCares dijo:

    Hola !
    Primero, no se qué error tienes…
    Segundo, descargaste e importaste el .jar correcto ?

    • ignacio m mtz dijo:

      Gracias MaritoCares por este ejemplo. Me sirvio mucho para iniciarme en la programacion en java. Cuidate y sigue compartiendo tu conocimiento.

  6. daniel dijo:

    GRACIAS!!!

  7. Marlon dijo:

    En que parte del codigo JSP agrego las otras lineas? o me podrian pasar como queda el código al final?

  8. Jerry Harry dijo:

    siga compartiendo mas compañero,exitos y muchas bendicones Dios lo ayude…

  9. Francisco dijo:

    Eres un maldito y jodido genio, me salvaste, llevaba tiempo tratando de solucionarlo, y me has ayudado…… GRACIAS……. 😀

  10. Anónimo dijo:

    hola me gusta su codigo pero como hago que aparecesca esos datos en mysql

Deja un comentario