Vous êtes sur la page 1sur 5

Java y NetBeans (II), Conexión con Java y Mysql

Por ciertos motivos recientemente me cambie de trabajo y con ello ya no seguí con el
desarrollo en Java, pero como no me gusta dejar las cosas a medias durante mis ratos libres
seguiré escribiendo sobre java y NetBeans. En esta ocasión como acceder a una base de datos
Mysql.

Lo primero que necesitamos es el driver para que java se pueda entender con Mysql, ese
driver lo pueden descargar desde este enlace: http://dev.mysql.com/downloads/connector/j/

Al descomprimir el paquete notaran varios archivos pero el que realmente nos interesa es
este .jar mysql-connector-java-x.xx.x-bin.jar dependiendo del directorio de instalación de
java ese archivo se debe guardar en una carpeta parecida a esta: C:\Program Files
(x86)\Java\jdk1.6.0_21\jre\lib\ext en esa carpeta ya hay otros .jar

El siguiente paso será crear una pequeña base en mysql, mi base de ejemplo se llama java y
contiene una sola tabla llamada usuario que a su vez solo tiene 3 campos, usuario, contra y
status. Le agregué un registro y quedó de esta manera:

Emplearé el ejemplo de la lección anterior “formulario login” para continuar. Recordando un


poco el formulario pide los datos de usuario y contraseña para acceder al ‘sistema’ solo que
no realizaba ninguna conexión. Primero se debe crear la clase para conectarnos, yo le he
llamado conexion. Su árbol de archivos debe quedar más o menos así:
y el codigo es el siguiente:

package conexion;

import java.sql.*;
public class conexion {
public String bd = "java";
//asegurate de cambiar esto por el nombre tu usuario en mysql
public String login = "root";
//aqui escribe la contraseña de ese usuario
public String password = "root";
public String url = "jdbc:mysql://localhost/"+bd;
public Statement conectar() {
Connection conn = null;
Statement st=null;
try {
Class.forName("org.gjt.mm.mysql.Driver");
conn = DriverManager.getConnection(url, login, password);
if (conn != null)
{
System.out.println("Yeah, hemos conectado con "+url+" ... Ok");
st=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);

//conn.close();
}
}
catch(SQLException ex) {
System.out.println("Rayos!!! Hubo un problema al conectar con la base
"+url);
}
catch(ClassNotFoundException ex) {
System.out.println(ex);
}
return st;
}
}
La primera línea package conexion; puede variar según el nombre que le hayan dado a su
proyecto. En términos generales el código es fácil de comprender y como esta clase es
sencilla solo nos devolverá una variable Statement que es la que se encargara de enviar las
consultas a mysql la línea más importante aquí es:

st=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);

Con esto creamos la variable Statement, aunque puede utilizarse sin enviarle parámetros,
para este ejemplo es necesario enviarle estos dos:

ResultSet.TYPE_SCROLL_INSENSITIVE

TYPE_SCROLL_INSENSITIVE le indica al resulset que los cambios que se hagan mientras


la conexion está abierta no se reflejen, además nos servirá para detectar el numero de registros
que nos arroje como resultado la consulta.

ResultSet.CONCUR_READ_ONLY

CONCUR_READ_ONLY establece que los datos que se devuelven serán de solo lectura.

Regresamos al formulario principal y hacemos visible el componente dialog y damos doble


clic en el botón ingresar para ver su método ActionPerformed

Si siguieron el ejemplo anterior recordaran que si se dejaba uno de los campos vacios el
formulario muestra un mensaje de error pero si se ingresan los datos nos deja ver el
formulario principal ahora nos vamos precisamente a esa sección del método para realizar la
consulta desde nuestra base; El código que se agregará cuando se introduzcan los datos de
usuario y contraseña será este:

//creamos una instancia de la clase conexion


conexion conectar = new conexion();
//se llama a la funcion conectar que nos devuelve un statement
Statement st =conectar.conectar();

try
{
//realizamos la consulta
ResultSet rs = st.executeQuery("SELECT * FROM usuario WHERE
usuario='"+usuario+"' AND contra ='"+password+"'");
//hay que posicionarse en el ultimo registro
rs.last();

//recuperamos el numero de registros del Resulset


int encontrado=rs.getRow();

if(encontrado==1) // si nos devuelve un registro significa que la


autenticacion es correcta y mostramos el formulario
{
this.setVisible(true);
dialog_login.setVisible(false);
}
else
{
JOptionPane.showMessageDialog(null, "Sus datos son incorrectos,
reviselos");
}
//cerramos la conexion
rs.close();
st.close();
}
catch (Exception e)
{
e.printStackTrace();
}

Como vemos el código tampoco es tan complicado de entender. Aquí les pongo el código
completo del método ActionPerformed

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)


{
String usuario=tusuario.getText();
String password=tcontra.getText();
if((usuario.isEmpty())||(password.isEmpty()))
{
JOptionPane.showMessageDialog(null, "Ingrese su nombre de usuario y
contraseña");
}
else
{
conexion conectar = new conexion();
Statement st =conectar.conectar();

try
{

ResultSet rs = st.executeQuery("SELECT * FROM usuario WHERE


usuario='"+usuario+"' AND contra ='"+password+"'");
rs.last();

int encontrado=rs.getRow();
System.out.println(String.valueOf(encontrado));
if(encontrado==1)
{
this.setVisible(true);
dialog_login.setVisible(false);
}
else
{
JOptionPane.showMessageDialog(null, "Sus datos son incorrectos,
reviselos");
}

rs.close();
st.close();
}
catch (Exception e)
{
e.printStackTrace();
}

}
}

Ejecuten el formulario y si todo sale bien se podrán ver los mensaje en la consola de java…

y si nada sale bien pues… arremetan sin piedad contra mí en sus comentarios. Quizá lo que
les resulte incomodo es trabajar con un form creado en una lección anterior y no con uno
hecho desde cero; de cualquier manera aquí les dejo la lección para que la descarguen y
prueben en sus maquinas.

Vous aimerez peut-être aussi