En esta aplicacion podremos observar un codigo con el cual nos conectaremos a una base de datos desde java y validaremos un usuario que se encuentra en una base de datos en MySql dandole tambien algunos permisos al usuario para ingresar a una aplicacion y aun lo mas importante es que esta aplicacion es extensible para otros usuarios.
acontinuacion presentare las clases utilizadas:
package co.com.udistrital.busqueda;
import java.sql.*;
import co.com.udistrital.conexion.ConexionBaseDatos;
import co.com.udistrital.conexion.SingletonConexionBaseDatos;
public class Busqueda {
private int cont;
private String usuarios[][];
private ResultSet tabla;
static String cadenaSql;
private Statement stmt;
private Connection conexion=null;
public Busqueda(String usuario){
ConexionBaseDatos conexionBaseDatos= new SingletonConexionBaseDatos();
cadenaSql = "SELECT * FROM usuarios WHERE(usuario='"+usuario+"')";
tabla=null;
usuarios= new String[4][4];
try{
conexion= conexionBaseDatos.getConexion();
stmt= (Statement) conexion.createStatement();
tabla = stmt.executeQuery(cadenaSql);
while(tabla.next()){
cont++;
for(int i=1; i<=3; i++){
System.out.print(tabla.getString(i)+"\t");
usuarios[cont][i]=tabla.getString(i);
}
System.out.println();
}
}catch(SQLException ex){
ex.printStackTrace();
System.out.println("toco seguirle cacharreando");
}
}
public String getContrasena() {
return usuarios[1][2];
}
public String getTipo() {
return usuarios[1][3];
}
}
package co.com.udistrital.conexion;
import java.sql.*;
public class ConexionBaseDatos {
static String db="usuarios";
static String login="root";
static String password="123";
static String url="jdbc:mysql://localhost/"+db;
private Connection conexion=null;
public ConexionBaseDatos(){
try{
Class.forName("com.mysql.jdbc.Driver");
conexion=DriverManager.getConnection(url, login, password);
if (conexion!=null){
System.out.println("Coneccion a base de datos "+db+" OK");
}
}catch(SQLException e){
System.out.println("no cargo el driver");
System.out.println(e);
}catch(ClassNotFoundException e){
System.out.println("lo mismo");
System.out.println(e);
}
}
public Connection getConexion() {
return conexion;
}
}
package co.com.udistrital.conexion;
public class SingletonConexionBaseDatos extends ConexionBaseDatos{
static private ConexionBaseDatos singletonConexionBaseDatos=null;
public SingletonConexionBaseDatos(){}
public ConexionBaseDatos getConexionBaseDatos(){
if ( singletonConexionBaseDatos==null){
singletonConexionBaseDatos=new ConexionBaseDatos();
}
return singletonConexionBaseDatos;
}
}
package co.com.udistrital.tiposClientes;
public abstract class ClienteAbstracto {
public void MostrarDialogo(){};
}
package co.com.udistrital.tiposClientes;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class ClienteTipo1 extends ClienteAbstracto {
public void MostrarDialogo(){
JFrame uno=new JFrame();
JOptionPane.showMessageDialog(uno, "USUARIO VALIDO TIPO: "+"1", "CORRECTO", JOptionPane.INFORMATION_MESSAGE );
uno.setVisible(true);
}
}
package co.com.udistrital.tiposClientes;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class ClienteTipo2 extends ClienteAbstracto {
public void MostrarDialogo(){
JFrame uno=new JFrame();
JOptionPane.showMessageDialog(uno, "USUARIO VALIDO TIPO: "+"2", "CORRECTO", JOptionPane.INFORMATION_MESSAGE );
uno.setVisible(true);
}
}
package co.com.udistrital.tiposClientes;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class ClienteTipo3 extends ClienteAbstracto {
public void MostrarDialogo(){
JFrame uno=new JFrame();
JOptionPane.showMessageDialog(uno, "USUARIO VALIDO TIPO: "+"3", "CORRECTO", JOptionPane.INFORMATION_MESSAGE );
uno.setVisible(true);
}
}
package co.com.udistrital.tiposClientes;
public class CreadorCliente {
public void CrearCliente(){};
public void CredorClienteSegunTipo(String tipo){
if (tipo.equals("1")){
CreadorTipo1 tipo1 = new CreadorTipo1();
tipo1.CrearCliente();
}
if (tipo.equals("2")){
CreadorTipo2 tipo2 = new CreadorTipo2();
tipo2.CrearCliente();
}
if (tipo.equals("3")){
CreadorTipo3 tipo3 = new CreadorTipo3();
tipo3.CrearCliente();
}
}
}
package co.com.udistrital.tiposClientes;
public class CreadorTipo1 extends CreadorCliente{
public void CrearCliente(){
ClienteTipo1 clienteTipo1= new ClienteTipo1();
clienteTipo1.MostrarDialogo();
}
}
package co.com.udistrital.tiposClientes;
public class CreadorTipo2 extends CreadorCliente {
public void CrearCliente(){
ClienteTipo2 clienteTipo2= new ClienteTipo2();
clienteTipo2.MostrarDialogo();
}
}
package co.com.udistrital.tiposClientes;
public class CreadorTipo3 extends CreadorCliente {
public void CrearCliente(){
ClienteTipo3 clienteTipo3= new ClienteTipo3();
clienteTipo3.MostrarDialogo();
}
}
package co.com.udistrital.validacion;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import co.com.udistrital.busqueda.Busqueda;
import co.com.udistrital.tiposClientes.CreadorCliente;
public class Validar {
public Validar(String usuario,String contrasena){
JFrame uno=new JFrame();
CreadorCliente creadorCliente= new CreadorCliente();
Busqueda busqueda= new Busqueda(usuario);
System.out.println(busqueda.getContrasena()+ "/t"+contrasena);
if (busqueda.getContrasena().equals(contrasena)){
creadorCliente.CredorClienteSegunTipo(busqueda.getTipo()+"");
System.out.println("usuario valido");
}else{
JOptionPane.showMessageDialog(uno,"USUARIO NO VALIDO","ERROR",JOptionPane.ERROR_MESSAGE);
System.out.println("usuario no valido");
}
}
}
package co.com.udistrital.ventana;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import co.com.udistrital.validacion.Validar;
public class Ventana implements ActionListener {
private JFrame jFrameVentana;
private Container containerPanePrincipal;
private JButton jButtonAceptar;
private JTextField jTextFieldUsuario;
private JPasswordField jPasswordContrasena;
private JLabel jLabelUser;
private JLabel jLabelPassword;
static JLabel jLabelValidacion;
public Ventana(){
jFrameVentana=new JFrame ("VALIDACION DE USUARIO");
jButtonAceptar=new JButton ("ACEPTAR");
jButtonAceptar.addActionListener(this);
jTextFieldUsuario=new JTextField();
jPasswordContrasena=new JPasswordField();
jLabelUser=new JLabel("Usuario");
jLabelPassword=new JLabel("Contraseña");
jLabelValidacion=new JLabel("VALIDACION DE USUARIO");
containerPanePrincipal=new Container();
containerPanePrincipal=jFrameVentana.getContentPane();
containerPanePrincipal.setLayout(null);
jButtonAceptar.setBounds(97, 140, 90, 35);
containerPanePrincipal.add(jButtonAceptar);
jTextFieldUsuario.setBounds(125,50,120,24);
jTextFieldUsuario.setEditable(true);
jTextFieldUsuario.setBackground(Color.white);
jTextFieldUsuario.setAlignmentX(JTextField.LEFT_ALIGNMENT);
containerPanePrincipal.add(jTextFieldUsuario);
jPasswordContrasena.setBounds(125,90,120,24);
jPasswordContrasena.setEditable(true);
jPasswordContrasena.setBackground(Color.white);
jPasswordContrasena.setAlignmentX(JTextField.LEFT_ALIGNMENT);
containerPanePrincipal.add(jPasswordContrasena);
jLabelUser.setBounds(25, 44, 70, 40);
containerPanePrincipal.add(jLabelUser);
jLabelPassword.setBounds(25, 84, 70, 40);
containerPanePrincipal.add(jLabelPassword);
jLabelValidacion.setBounds(65, 5, 150, 35);
containerPanePrincipal.add(jLabelValidacion);
jFrameVentana.getRootPane().setDefaultButton(jButtonAceptar);
jFrameVentana.pack();
jFrameVentana.setSize(285,215);
jFrameVentana.setLocationRelativeTo(null);
jFrameVentana.setResizable(false);
jFrameVentana.setVisible(true);
jFrameVentana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource()==jButtonAceptar){
Validar validar= new Validar(jTextFieldUsuario.getText(),jPasswordContrasena.getText());
}
}
}
package co.com.udistrital.ventana;
public class Main {
public static void main(String[] args) {
Ventana ventana=new Ventana();
}
}
Aca podremos encontrar todas las clases necesarias para la compilacion en eclipse pero sin embargo necesitaremos de la base de datos en mysql llamada usuarios de la siguiente manera:
usuario | contrasena | permisos |
jimmy | 1234 | 1 |
darepecu | 123 | 1 |
jack | sparrow | 2 |
aura | aura89 | 2 |
caro | carito | 3 |
perro | uno | 3 |
En la clase conexion tambien podremos encontrar alli los parametros para la conexion a base de datos por lo cual tendremos que hacer en esa clase las modificaciones pertinentes segun nuestra configuracion de MySql.
Hola, gracias por el aporte!
ResponderEliminarCómo se haría para que una vez logado el usuario, y según su perfil se viera una pantalla u otra (ventanas diferentes según el perfil de usuario)...
¡Gracias!
donde puedo descargar el código Gracias
ResponderEliminar