COMO CONECTARSE A USUARIO Y CONTRASEÑA EN NETBEANS.docx

Embed Size (px)

Citation preview

Java y NetBeans (I) Formulario de loginPor algunas circunstancias me pidieron programar un sistema para un consultorio mdico, el nico inconveniente era el requisito de que fuese exclusivamente de escritorio, Anda la Osa!; haca tiempo que no desarrollaba en lenguajes de escritorio. A pesar de mis objeciones para desarrollarlo en web la palabra del jefe prevaleci as que medit un poco en que lenguaje utilizar y termin decantndome por Java, la principal razn?, el lado de la moneda donde ech la suerte cay en guila XD.Despus de la fase de anlisis la cuestin era seleccionar el entorno de trabajo El IDE pues, es que decir entorno de trabajo suena ms nice -, en mis aos de escolar toqu Java por primera vez con JCreator , la versin que usaba no difera mucho del actual block de notas, pero ahora me encuentro con dos mastodontes como Eclipse y NetBeans, por que escog NetBeans? porque esta vez la moneda cay del otro ladoBueno, basta de palabreras, a lo que te truje Chencha, este ser el primer post de lo que espero sea una til serie de artculos sobre programacin de java con el IDE NetBeans. Bien supongamos que ya tenemos instalado el IDE y el SDK de Java (luego escribir sobre la instalacin).Abrimos NetBeans y creamos un nuevo proyecto:una aplicacin java y clic en siguiente.

A la segunda ventana le dan siguiente y en la tercera escriben el nombre del proyecto que se crear (yo le llam login) y desmarcamos la casilla crear clase principal. Clic en finalizar.

Una vez creado nuestro proyecto notaran que no tenemos archivos as que crearemos un paquete de archivos llamado login

y ya dentro de nuestro paquete se crear el form principal al que evidentemente llam principal

El rbol de nuestro proyecto debe quedar ms o menos as:

La idea central de la prctica es no dejar que el usuario pueda acceder al sistema sin antes estar debidamente identificado; Lo primero que haremos es agregar un componente Jpanel al formulario principal

.. Y dentro del panel pueden agregar cualquier contenido, en el inspector de componentes podrs ver los elementos que has insertado al formulario

Ahora vamos a correr nuestro programa para ver su apariencia, va a aparecer una pantalla indicndonos que el proyecto no cuenta con una clase principal y nos pregunta si queremos hacer que este form sea la clase principal, clic enok.

Nos toca ahora hacer la ventanita que nos pedir el nombre de usuario y contrasea, pare ello vamos a agregar al formulario un controldialog

Una vez agregado el control se podr notar que nada! no se notar nada, y es que el control no es visible desde form pero si lo podemos ver en el inspector de componentes y si le damos doble clic al elemento entonces lo haremos visible para poder trabajar con l. Le cambiar el nombre de variable pordialogo.

Ahora, una vez en el Jdialog hay que agregar un Text Field , un password Field y un botn para dejar el Jdialog ms o menos as:

Si corres el programa nuevamente notaras que el dialogo no es visible ya que es mediante programacin que lograremos eso. Vamos al mtodo constructor del formulario, dirjase a la pestaa que est a la derecha del inspector y de doble clic en el mtodo constructor.

Vamos a agregar algo de cdigo en el mtodo constructor que te debe quedar de la siguiente manera ( el mtodo initComponents es creado por NetBeans, no lo toques):?Ver cdigoJAVA public principal() { initComponents(); dialogo.setSize(350, 220); dialogo.setLocationRelativeTo(this); dialogo.setTitle("Inicio de Sesin"); dialogo.setVisible(true); }

Resumiendo, la funcinsetSizeindica el ancho y largo del dialogo, consetLocationRelativeTo(this)posicionamos el dialogo en el centro de la pantalla,setTitledesigna el titulo del dialogo ysetVisiblemuestra el dialogo. Ahora corre el programa y veras el dialogo detrs del formulario principal.

Vamos a desaparecer el form principal para que solo se vea el dialogo de inicio de sesin, vaya al mtodo principal del formulario

y la propiedadtruede esta lnea cmbiala afalse,luego corre el form y solo veras el dialogo.new principal().setVisible(false);Sin embargo si cerramos el dialogo el programa sigue corriendo aunque no lo veamos, es por ello que vamos programar la accin que realizar el dialogo al cerrarse. Seleccione de nuevo el componente dialog y en el panel de propiedades en la pestaa eventos seleccionamos el eventowindowClosingy automticamente nos creara el cdigo del evento

Al que solo tendrn que agregar esta sencilla lneaSystem.exit(0);de tal modo que el cdigo de ese evento nos quedara as:private void dialogoWindowClosing(java.awt.event.WindowEvent evt) {System.exit(0);}

Con esto al momento de cerrar el dialog, el programa entero se cierra y dejamos de consumir recursos en nuestra maquina. Ya casi terminamos, ahora solo nos toca la validacin del login. Vamos a hacer visible de nuevo el componente dialogo y cambiamos los nombres de las variables del TextField y el PasswordField por estos: tusuario y tpassword

Ahora damos doble clic en el botn iniciar sesin para ver el cdigo del ActionPerformed y le agregamos este cdigo:String usuario=tusuario.getText(); String password=tpassword.getText(); if((usuario.isEmpty())||(password.isEmpty())) { JOptionPane.showMessageDialog(null, "Ingrese su nombre de usuario y contrasea"); } else { this.setVisible(true); dialogo.setVisible(false); }En esta leccin no veremos nada de acceso a datos as que solo haremos una validacin simple; El cdigo anterior nos indica que si el usuario no rellena los campos de usuario y contrasea le aparecer un mensaje de error hacindoselo saber pero si rellen los dos campos entonces el form principal de har visible y el dialogo desaparecer.Una cosa ms, para hacer uso del JOptionPane hay que importar la librerajavax.swing.JOptionPanede otro modo el programa no va a correr.ahora si solo resta ejecutar el programa y ver la magia.Java y NetBeans (II), Conexin 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 ocasin 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 .jarmysql-connector-java-x.xx.x-bin.jardependiendo del directorio de instalacin 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 .jarEl siguiente paso ser crear una pequea base en mysql, mi base de ejemplo se llamajavay contiene una sola tabla llamadausuarioque 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 leccin anteriorformulario loginpara continuar. Recordando un poco el formulario pide los datos de usuario y contrasea para acceder al sistema solo que no realizaba ninguna conexin. Primero se debe crear la clase para conectarnos, yo le he llamadoconexion. Su rbol de archivos debe quedar ms o menos as:

y el codigo es el siguiente:?Ver cdigoJAVA package conexion;import java.sql.*;public class conexion {public String bd = "java"; //asegurate de cambiar esto por el nombre tu usuario en mysqlpublic String login = "root"; //aqui escribe la contrasea de ese usuariopublic 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 lneapackage conexion;puede variar segn el nombre que le hayan dado a su proyecto. En trminos generales el cdigo es fcil de comprender y como esta clase es sencilla solo nos devolver una variableStatementque es la que se encargara de enviar las consultas a mysql la lnea ms importante aqu es:?Ver cdigoJAVA st=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

Con esto creamos la variable Statement, aunque puede utilizarse sin enviarle parmetros, para este ejemplo es necesario enviarle estos dos:?Ver cdigoJAVAResultSet.TYPE_SCROLL_INSENSITIVE

TYPE_SCROLL_INSENSITIVE le indica al resulset que los cambios que se hagan mientras la conexion est abierta no se reflejen, adems nos servir para detectar el numero de registros que nos arroje como resultado la consulta.?Ver cdigoJAVAResultSet.CONCUR_READ_ONLY

CONCUR_READ_ONLY establece que los datos que se devuelven sern de solo lectura.Regresamos al formulario principal y hacemos visible el componente dialog y damos doble clic en el botn ingresar para ver su mtodo 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 seccin del mtodo para realizar la consulta desde nuestra base; El cdigo que se agregar cuando se introduzcan los datos de usuario y contrasea ser este:?Ver cdigoJAVA//creamos una instancia de la clase conexionconexion conectar = new conexion();//se llama a la funcion conectar que nos devuelve un statementStatement 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 Resulsetint 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 cdigo tampoco es tan complicado de entender. Aqu les pongo el cdigo completo del mtodo ActionPerformed?Ver cdigoJAVAprivate 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 contrasea"); } 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 podrn 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 leccin anterior y no con uno hecho desde cero; de cualquier manera aqu les dejo la leccin para que la descarguen y prueben en sus maquinas.Descargar archivosTags:acceso a datos,desarrollo de escritorio,java,mysql,netbeans,programacinEsta entrada fue agregada el Mircoles, Agosto 25th, 2010 a las 23:03 y esta guardada bajo la categora Desarrollo escritorio, java. Puedes seguir cualquier respuesta a esta entrada a travs deRSS 2.0feed. Puedesenviar un comentario, otrackbackdesde tu propio sitio.