JComboBox y un poco de SQLite

Como parte de un proyecto que estamos haciendo en el cual utilizamos SQLite, bueno un wrapper para Java, especificamente el de los chicos de Zentus es un driver jdbc asi que es muy útil, para descargarlo dirijanse a http://www.zentus.com/sqlitejdbc/

Pues para iniciar tenemos que instalar el driver jdbc de SQLite para ponerlo en marcha. En realidad lo importante del ejemplo del JCombobox es la integración con la BD, aunque en verdad es algo muy sencillo una vez que tenemos el ResultSet.

Bueno iniciemos…

Instalando SQLite para Java. (Windows)

Lo primero que debemos hacer es bajar los archivos correspondientes de la página de los chicos de Zentus, como trabajo sobre Windows pueden descargar la versión para windows directamente desde AQUI, es un TGZ asi que necesitarán el 7zip o Winrar para extraerlo. Yo renombre el archivo de sqlitejdbc-v033-native.jar a sqlitejdbc.jar por comodidad.

archivos_sqlite

Luego habrá que poner la DLL y el JAR en sus ubcaciones correspondientes, notese que ambas se colocan en la carpeta JRE dentro del JDK que tengamos instalado:

La DLL:
ruta_dll

El JAR:
ruta_jar

Y con esto tendremos instalado el drives JDBC de SQLite. Ahora pasemos a Jugar con el JComboBox…

Llenando JComboBox a través de una Base de Datos.

En este punto es importante aclara que no importa que motor de base de datos estemos usando, lo que importa es que el resultado de la consulta la obtengamos a través de un ResultSet.

Lo primero que necesitaremos será importar las librerí­as adecuadas:

import javax.swing.*; // Nos permitirá usar el JComboBox
import java.awt.*; // Esta para poder utilizar cosas como el Dimension
import org.sqlite.JDBC; // Para poder acceder a la BD de SQLite
import java.sql.*; // Y esta ultima para poder utilizar el ResultSet

Aclarando un poco este ejemplo, solo servirá para traer los datos desde la Base de Datos y ponerlos en el JComboBox, así­ no importa si tenemos una BD con la lista de todos los paises del mundo, el JComboBox se llenará automáticamente.

/**
 * @(#)comboboxDinamico.java
 *
 *
 * @author: DaHouseCat
 * @version 1.00 2007/4/2
 * @im: carlos.z32cm (at) gmail.com
 */
 
import javax.swing.*;
import java.awt.*;
import org.sqlite.JDBC;
import java.sql.*;

public class comboboxDinamico {
        

    public comboboxDinamico() {

    }
    

    public static void main(String[] args) {
        // Inicializamos un JFrame y lo llamamos Pantalla para podr lanzar una ventana que 
        // contendrá a nuestro JComboBox y podamos probar que funciona ^_^
        JFrame Pantalla = new JFrame ("Ejemplo JCombobox con Base de Datos");
    	Pantalla.setSize (new Dimension(350,50));
    	Pantalla.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Detiene la ejecución del programa al cerrar la ventana.
    	JComboBox lista =new JComboBox();
    	lista.setSize (new Dimension(350,20));
    	// Conectamos a la Base de datos, es necesario tener el TRY y el CATCH, si no lo tenemos
    	// no funcionará de ninguna manera.
    	try {
	    	String fileName = "test.s3db";
	        Class.forName("org.sqlite.JDBC");
	        Connection conn = DriverManager.getConnection("jdbc:sqlite:"+fileName);
	        Statement stmt = conn.createStatement();
	        String query = "SELECT * FROM Registros";
    	// Ejecutamos el query y el valor devuelto lo recibimos en la variable "rs"
    	// rs.next() nos lleva por cada una de las filas que se extrajeron
    	// rs.getString("CAMPO"); saca la cadena del CAMPO que le especifiquemos
    	// y lista.addItem(); le agrega lo que sacamos del campo al JComboBox
	        ResultSet rs = stmt.executeQuery(query); 
	        while (rs.next()) {
				lista.addItem(rs.getString("Dato"));
	        }
	         conn.close();
			}
			catch (Exception ex) {
	            System.out.println(ex.getMessage());
	            System.out.println(ex.toString());
        	}
    	// Agregamos el JComboBox al JFrame y mostramos el JFrame
    	Pantalla.add(lista);
    	Pantalla.setVisible(true);
    }
}

Como verán fue sumamente sencillo agregarlo, claro este es un script un poco más elegante que el primero que utilice para hacer esto, por eso comparto con todos la experiencia, ya después les mostraré algunos de JTable y otros componentes tan bonitos del Java Swing, por cierto para hacer una interfaz más bonita con el JFrame, usen un Layout como el GridBagLayout.

Tip: Acerca de Layouts

Yo recomiendo que se haga de la siguiente manera:

JFrame <- JPanel <- Componenetes Java Swing

Así­ pues simplemente nos la liamos con el JPanel y luego sencillamente agregamos el JPanel al JFrame y listo en mi experiencia fue más sencillo.

Tambien para editar la BD de SQLite les recomiendo el SQLite Administrator, esta muy bien y fácil de utilizar.

Archivos del Ejemplo

Ejemplo JComboBox – Incluye la Base de Datos.

Ojala esto les sea útil… :happy_tb:

9 Comentarios en “JComboBox y un poco de SQLite

  1. Hola, fue muy util su exposicion para solucionar el tema de llenar un combobox de Javax Swing con elementos de una Tabla en una BD. En mi caso estoy usando el editor NetBeans en donde genere por el editor GUI Matisse un combobox. Ahora el problema que tengo es que en NetBeans existe una forma de pasarle elementos al combobox. La forma requerida es llamada FormConnection. En esta forma, debo ingresar un codigo de preinicializacion y un codigo de postinicializacion, y en medio de ambos codigos el codigo que contendra mis elementos a poner en el combobox. EL problema es que no encuentro que clase debo usar para generar este listado. He probado con ComboBoxModel, ComboBox, pero al momento de ejecutar mi archivo, me corre todo, es decir se conecta a la BD MYSQL, llama la tabla pero no aparece nada en mi combobox. Podrian darme alguna luz sobre que clase del componente Javax.Swing debo usar para implementar la lista de elementos de mi Tabla en mysql.

  2. hola, espero me puedan responder, estoy checando el ejemplo y cuando corro el programa, surge una excepsion de sql, es esta java.sql.SQLException: out of memory
    les agradeceria si me pudieran ayudar

  3. Hola nuevamente, pudiste subir el codigo??..si es asi, donde lo encuentro….
    ah si no fuese mucho podrias indicarme el procedimiento a lo que te plantee por chat (varios jcombobox enlazados…recuerdas)saludos desde Chile!!!

    Christian

Comentarios cerrados.