Foros del Web » Programación para mayores de 30 ;) » Java »

Usuario y Contraseña en Java, MySQL

Estas en el tema de Usuario y Contraseña en Java, MySQL en el foro de Java en Foros del Web. Hola muy buenas tengo un problema con el código, no puedo acceder a la siguiente ventana , no me entra el usuario y contraseña. Tengo ...
  #1 (permalink)  
Antiguo 22/05/2013, 03:50
 
Fecha de Ingreso: abril-2013
Mensajes: 9
Antigüedad: 11 años
Puntos: 0
Usuario y Contraseña en Java, MySQL

Hola muy buenas tengo un problema con el código, no puedo acceder a la siguiente ventana , no me entra el usuario y contraseña.
Tengo creado un puente con JDBC y un MySQL con una base de datos llamada practica, para los usuarios lo que tengo echo es una tabla con los campos idUsuario, usuario,password.

Lo que me gustaría es entrar al siguiente Framer dependiendo del usuario que sea, por ejemplo:
Si inicio sesión con el usuario: administrador que se me abra un Framer o si inicio sesión con otro usuario distinto que se abra otro framer diferente.
Código:
package VentanaLogin;
import javax.swing.*;
import java.io.*;
import java.sql.*;
import java.awt.Panel.*;
import java.awt.*;
import java.awt.event.*;
 
public class VentanaLogin extends JFrame
{
        private JTextField txtUser, txtPass;
        private JLabel lblUser, lblPass;
        private JButton btnAceptar, btnCancelar;
        String usuario, elPassword;
      //Crear un objeto tipo Connection
    	Connection unaConexion=null;
        String dsn=new String("jdbc:odbc:puentejava");
 
    VentanaLogin()
    {
 
        Container contenedor = getContentPane();
        contenedor.setLayout(new FlowLayout());
 
        // crear etiqueta y cuadro de texxto del usuario
        txtUser = new JTextField(10);
        lblUser = new JLabel("Usuario: ");
        txtUser.setToolTipText("Escriba su nombre de usuario");        
        contenedor.add( Box.createVerticalStrut(50) );
        contenedor.add(lblUser);
        contenedor.add(txtUser);
 
        //crear etiqueta y cuadro de texxto del pw
        txtPass = new JPasswordField(10);
        lblPass = new JLabel("Contraseña: ");
        txtPass.setToolTipText("Escriba su contraseña");
        contenedor.add(lblPass);
        contenedor.add(txtPass);
 
        //Crear y agregar los botones 
        btnAceptar = new JButton("Aceptar");
        //establecer Boton aceptar por defecto
        getRootPane().setDefaultButton(btnAceptar);
 
        btnCancelar = new JButton("Cancelar");
        contenedor.add(btnAceptar);
        contenedor.add(btnCancelar);
 
 
 
      // Crear un escuchador al boton Aceptar 
        ActionListener escuchadorbtnAceptar = new ActionListener()
        {
            public void actionPerformed(ActionEvent evt)
            {
                try
                {                    
                    //chekar si el usuario escrbio el nombre de usuario y pw
                    if (txtUser.getText().length() > 0 && txtPass.getText().length() > 0 )
                    {
                        // Si el usuario si fue validado correctamente
                        if( validarUsuario( txtUser.getText(), txtPass.getText() ) )    //enviar datos a validar
                        {
                            // Codigo para mostrar la ventana principal
                            setVisible(false);
                            VentanaPrincipal ventana1 = new VentanaPrincipal();
                            ventana1.mostrar();
 
 
                        }
                        else
                        {
                            JOptionPane.showMessageDialog(null, "El nombre de usuario y/o contrasenia no son validos.");
                            JOptionPane.showMessageDialog(null, txtUser.getText()+" " +txtPass.getText() );
                            txtUser.setText("");    //limpiar campos
                            txtPass.setText("");        
                             
                            txtUser.requestFocusInWindow();
                        }
 
                    }
                    else
                    {
                        JOptionPane.showMessageDialog(null, "Debe escribir nombre de usuario y contrasenia.\n" +
                            "NO puede dejar ningun campo vacio");
                    }
 
                } catch (Exception e)
                {
                    e.printStackTrace();
                }
                 
            }
        };
        btnAceptar.addActionListener(escuchadorbtnAceptar);      // Asociar escuchador para el boton Aceptar
 
 
      // Agregar escuchador al boton Cancelar
        ActionListener escuchadorbtnCancelar=new ActionListener()
        {
            public void actionPerformed(ActionEvent evt)
            {
                System.exit(0);         // terminar el programa
            }
        };
        btnCancelar.addActionListener(escuchadorbtnCancelar);      // Asociar escuchador para el boton Cancelar
        setTitle("Autentificacion de usuarios");
        setSize(400,150);           // Tamaño del Frame 
        setResizable(false);       // que no se le pueda cambiar el tamanio 
        //Centrar la ventana de autentificacion en la pantalla
        Dimension tamFrame=this.getSize();//para obtener las dimensiones del frame
        Dimension tamPantalla=Toolkit.getDefaultToolkit().getScreenSize();      //para obtener el tamanio de la pantalla
        setLocation((tamPantalla.width-tamFrame.width)/2, (tamPantalla.height-tamFrame.height)/2);  //para posicionar
        setVisible(true);           // Hacer visible al frame 
 
    }   // fin de constructor
 
    // Metodo que conecta con el servidor MYSQL y valida los usuarios
    boolean validarUsuario(String elUsr, String elPw)  throws IOException
    {
    	try
		{
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		}
		catch(ClassNotFoundException e)
		{
			System.out.println("Se ha producido un error al cargar el Driver");
		}
    	try
		{
    		unaConexion=DriverManager.getConnection(dsn,"root","studium");
		}
		catch(SQLException e)
		{
			System.out.println("Se produjo un error al conectar a la Base de Datos");
		}
        try
        {
            //nombre de la BD: bdlogin
             //nombre de la tabla: usuarios
             //                             id      integer auto_increment not null     <--llave primaria
             //                   campos:    usuario    char(25)
             //                              password char(50)
              
            Connection unaConexion  = DriverManager.getConnection ("jdbc:odbc:puentejava");
            // Preparamos la consulta
            Statement instruccionSQL = unaConexion.createStatement();
            ResultSet resultadosConsulta = instruccionSQL.executeQuery ("SELECT usuario,password FROM usuarios WHERE usuario='"+elUsr+"' AND password='"+elPw+"'");
 
            if( resultadosConsulta.first() )        // si es valido el primer reg. hay una fila, tons el usuario y su pw existen
                return true;        //usuario validado correctamente
            else
                return false;        //usuario validado incorrectamente
                 
        } catch (Exception e)
        {
            e.printStackTrace();
            return false;
        }
 
    }
     
    public static void main(String[] args)
    {
        VentanaLogin prueba = new VentanaLogin();
        prueba.setDefaultCloseOperation(prueba.EXIT_ON_CLOSE);
    }
 
}
El otro framer que tengo creado es el siguiente:

Código:
package VentanaLogin;

import javax.swing.*;
import java.awt.*;

public class VentanaPrincipal extends JFrame
{
	VentanaPrincipal()
	{   
		setSize(400,400);
		setTitle("ventana principal");        
		setLayout(new BorderLayout());
		add(Box.createHorizontalStrut(100),BorderLayout.WEST);
		add(new JLabel("Ventana principal del proyecto "),BorderLayout.CENTER);       

		setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public void mostrar()
	{
		setVisible(true);
	}

}
  #2 (permalink)  
Antiguo 27/05/2013, 09:41
 
Fecha de Ingreso: marzo-2013
Mensajes: 6
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Usuario y Contraseña en Java, MySQL

Donde te falla? Que error te da?
Simplifica la pregunta para que se pueda dar una buena respuesta.

EDIT:

Ya así de primeras veo un pequeño fallo:
String dsn=new String("jdbc:odbc:puentejava");
Sinceramente no sé bien que estás haciendo

Ya conexión debería ser así:
//jdbc:mysql://localhost:3306/nombreDeLaBase el puerto 3306 es el predeterminado por mysql si no lo has cambiado.
String url = "jdbc:mysql://localhost:3306/testdb";
String user = "testuser"; //Usuario de la base de datos (Suele ser root)
String password = "test623"; // contraseña de la base de datos (suele ser root o vacio)

Última edición por mueretee; 27/05/2013 a las 09:47
  #3 (permalink)  
Antiguo 27/05/2013, 11:49
 
Fecha de Ingreso: mayo-2013
Ubicación: Córdoba
Mensajes: 139
Antigüedad: 11 años
Puntos: 9
Respuesta: Usuario y Contraseña en Java, MySQL

Te recomiendo que la conexión a la base de datos y las consultas a la misma las realices en otra clase aparte, y las invocas.

Código Java:
Ver original
  1. public class MySql {
  2.    
  3.     private String user;
  4.     private String pw;
  5.     private String dataBaseName;
  6.     private String host;
  7.     private String url;
  8.     public Connection conexion = null;
  9.    
  10.    
  11.     public MySql(){
  12.         user = "root";//comunmente el user es root
  13.         pw = "123456";//la clave
  14.         dataBaseName = "baseName";//nombre de la base de datos
  15.         host = "localhost";
  16.         url = "jdbc:mysql://" + host + "/" + dataBaseName;      
  17.     }
  18.     public void Conectar() throws SQLException, ClassNotFoundException{
  19.          Class.forName("com.mysql.jdbc.Driver");            
  20.          conexion = DriverManager.getConnection(url, user, pw);        
  21.          System.out.println("Conexion on");
  22.     }
  23.     public void Desconectar() throws SQLException,ClassNotFoundException{
  24.         conexion.close();
  25.         System.out.println("Conexion off");
  26.     }
  27. }

De ese modo te quedara muchísimo mas prolijo el código.

Etiquetas: contraseña, metodo, mysql, programa, string, usuario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:19.