Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / JToggleButton y base de datos

JToggleButton y base de datos

Autor jc mouse domingo, julio 20, 2014

En este tutorial veremos una forma de trabajar con el swing  JToggleButton y una base de datos para dar respuesta a una interrogante planteada desde facebook el cual resumiendo dice así: “Quiero cargar datos de una base de datos en un JToggleButton  y al mismo tiempo realizar cambios desde la aplicación manipulando el JToggleButton y guardar estos en la base de datos.”

Primero ¿que es un JToggleButton ?

JToggleButton : Son botones que pueden estar en estado de ENCENDIDO/APAGADO o SELECCIONADO/NO_SELECCIONADO su uso es bastante sencillo y puede combinarse con un Button Group si se lo desea.

Solución

Si queremos guardar datos en las tablas de una bd, podemos hacerlo de distintas maneras, podemos usar un campo por dato de JToggleButton, o también podemos guardar todos esos datos en una cadena de texto como sera nuestro caso.

En este ejemplo almacenaremos los tipos de sangre (A+, A-, B+, B-, AB+, AB-, O+, O-) que estarán representados por un JToggleButton cada uno en un solo campo de la base de datos, para eso concatenaremos las opciones de la siguiente forma:

– Si en la interfaz seleccionamos el tipo de sangre A+ y B-,se formara la cadena “a+;b-;” y sera esta cadena que almacenaremos en la tabla, cuando tengamos necesidad de leer estos datos, la cadena de texto sera convertida en un array usando la función “split(“;”)” , de esta forma tendremos a disposición cada elemento para poder asignar a cada JToggleButton según corresponda, pero ¿y como reconocemos a cada JToggleButton? no usamos un array de objetos ya que añadimos gráficamente cada objeto en la interfaz, así que para poder identificar a cada objetos, haremos uso de su propiedad “name“, se asignara a cada JToggleButton un nombre que sera cada tipo de sangre.

Necesitamos

– IDE Netbeans 7.x

– Base de datos Access

– Conocimientos sobre base de datos y java

Nivel: Intermedio

Tiempo: 15 minutos

1. Proyecto. Crea un nuevo proyecto en netbeans con la siguiente estructura:

toggle

2. Base de datos. Haremos uso de una base de datos de Windows, así que crea una base de datos en Access con el nombre “sangre.accdb“, crea dentro de este una tabla “tipos” y sus campos son “Id: Autonumerico” y “datos: Texto

table access

3. Interfaz. Haciendo uso del modo diseño de netbeans crea la siguiente interfaz:

gui diseño

4. Pega el siguiente código en la clase DB.java

package com.bolivia.app;
import java.io.File;
import java.sql.*;
/**
 * @web http://www.jc-mouse.net/
 * @author Mouse
 */
public class DB {

   //contraseña a la base de datos si es que tuviera, si no se deja vacio
   private String password = "";
   //nombre de la base de datos Acces con extension *.mdb o *.accdb
   private String dbName = "sangre.accdb";
   //direccion de la base de datos
   private String bd = System.getProperty("user.dir") + "\\" + dbName + ";PWD=" + password;
   //driver para base de datos Access 2000, 2003, 2007, 2010
   private String url = "jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=" + bd;
   private Connection conn = null;

    /**
 * Constructor de clase
 * Realiza automaticamente una conexion a la base de datos
 */
   public DB() {
      try{
          File fichero = new File( System.getProperty("user.dir") + "\\" + dbName  );
          if ( fichero.exists() )
          {
                //obtenemos el driver para Access 
               Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");         
                 //obtenemos la conexión 
                 conn = DriverManager.getConnection(url);
               if ( conn!=null ){
                  //si la conexion tuvo exito 
                  System.out.println("Conexión a base de datos "+bd+". listo");
               }
          }
          else
          {            
            System.err.println( "No existe el archivo. " + dbName );  
            System.exit(1);
          }

      }catch(SQLException e){
         System.err.println( e.getMessage() );         
      }catch(ClassNotFoundException e){
         System.err.println( e.getMessage() );         
      }
   }

    /**
 * Consulta abierta
 * @param String sql
 */    
    public ResultSet consulta( String sql )
    {
        ResultSet res=null;
        try{
         PreparedStatement pstm = conn.prepareStatement( sql );
         res = pstm.executeQuery();          
         }catch(SQLException e){       
             System.err.println( "Error consulta :" + e.getMessage() );
        }
        return res;
    }

   /**
 * Actualiza la base de datos
 * @param String value Cadena con el tipo de sangre seleccionado
 * Ej: A+;B-;
 * @return Boolean
 */
   public boolean update( String value ){       
       boolean res = false;
        try {
            PreparedStatement pstm = conn.prepareStatement( "UPDATE tipos SET DATOS='"+value+"' WHERE Id=1 " );
            pstm.execute();
            pstm.close();
            res=true;
         }catch(SQLException e){
            System.err.println( e.getMessage() );
        }
        return res;
   } 

    /**
 * Realiza una consulta a la base de datos para obtener el registro con 
 * los datos de tipo de sangre almacenados
 * @return String[]
 */
    public String[] getDatos(){
       String datos="";
       ResultSet res= consulta("SELECT datos FROM Tipos WHERE Id=1 ");         
       try {
           res.next();
           datos = res.getString("datos");
           res.close();
       } catch (SQLException ex) {
           System.err.println( ex.getMessage() );
       }
       return datos.split(";");
    }

}

5. Codificando en la interfaz. Abre en modo código la clase interfaz.java y realiza los siguientes cambios:

– Añade los import

import java.awt.Component;
import javax.swing.JOptionPane;
import javax.swing.JToggleButton;

– Crea una instancia a la clase DB.java

private DB db = new DB();

– En el constructor de clase:

    public interfaz() {
        initComponents();

        //Se da nombre a cada JToggleButton
        this.jToggleButton1.setName("a+");
        this.jToggleButton2.setName("a-");
        this.jToggleButton3.setName("b+");
        this.jToggleButton4.setName("b-");
        this.jToggleButton5.setName("ab+");
        this.jToggleButton6.setName("ab-");
        this.jToggleButton7.setName("o+");
        this.jToggleButton8.setName("o-");
        //Se cargan datos de la base de datos 
        load();
    }

– Define la función load()

/**
 * Metodo privado que se conecta a la base de datos y carga en cada JToggleButton
 * los valores
 */
    private void load(){
        //obtiene datos
        String[] data = db.getDatos();
        //recorre cada valor de data
        for( int j=0; j<data.length ; j++){            
            //obtiene objetos de jpanel1 y los coloca en un array
            Component[] componentes = this.jPanel1.getComponents(); 
            //recorre cada objeto del array
            for( int i=0; i<componentes.length;i++ ) {
                //si el objeto es un JToggleButton
                if( componentes[i] instanceof JToggleButton ) {
                    //compara nombre con el valor obtenido de la base de datos
                    if( ((JToggleButton) componentes[i]).getName().equals( data[j] ) ){
                        //selecciona jToggleButton1
                        ((JToggleButton) componentes[i]).setSelected(true);
                    }
                }
            }                
        }
    }

– Para terminar definimos el evento que sucederá cuando presionemos el botón “Guardar Cambios

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
         String r = "";
         Component[] componentes = this.jPanel1.getComponents(); 
            for( int i=0; i<componentes.length;i++ ) {
                if( componentes[i] instanceof JToggleButton ) {
                    if( ((JToggleButton) componentes[i]).isSelected() ){
                      r += ((JToggleButton) componentes[i]).getName() + ";";
                    }
                }
            }    
        if ( db.update(r)){
            JOptionPane.showMessageDialog( this, "Base de datos actualizado" );
        }
    }

Ejecuta y prueba 🙂

toogle access

Proyecto Completo: JToggleButton  y base de datos

enjoy!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Dibujar Bitmap en Android

Dibujar Bitmap en Android

Android cuenta con una serie de herramientas en su API para el trabajo con gráficos, entre estos podemos mencionar: Bitm...

Pilas con C Sharp (Ejercicio Resuelto)

Pilas con C Sharp (Ejercicio Resuelto)

Desarrolle un programa en consola con un menú para el usuario que permita agregar elementos a una pila, eliminar element...

Gráficos estadísticos con Base de Datos SQLite

Gráficos estadísticos con Base de Datos SQLite

Si necesitamos mostrar gráficos estadísticos en nuestras aplicaciones android, contamos con muchas librerías disponibles...

Botón en java de Windows 8 Modern UI

Botón en java de Windows 8 Modern UI

En este tutorial crearemos un botón con el estilo del nuevo windows 8 Modern UI que primero se conoció como Metro UI.  E...

Vibrate: ¿Cómo hacer vibrar un dispositivo Android?

Vibrate: ¿Cómo hacer vibrar un dispositivo Android?

En este post crearemos una app para utilizar el vibrador de nuestro dispositivo android usando para ello el IDE Android...

Gestión de productos – El modelo (Parte 4)

Gestión de productos – El modelo (Parte 4)

En la estructura del proyecto, nuestro modelo mvc esta compuesto por tres paquetes, la vista, el modelo y controlador. L...

Comparte lo que sabes

Categorias

Últimas entradas

En este post aprenderemos lo que es la clonación de objetos en java o lo que es lo mismo, generación de nuevas instancia...

El índice TIOBE (TIOBE, The Importance of Being Earnest – “La importancia de ser honesto” – refe...

SDKMAN! es una herramienta para la administración de versiones paralelas de varios programas de desarrollo de software c...

Continuando con el estudio del meta lenguaje XML (Lenguaje de Marcado Extensible) bastante utilizado en el intercambio d...

Android Bolivia

MAUS