La funcionalidad de este ejemplo es guardar, eliminar y mostrar asignaturas en una Base de Datos MySQL.
Primero que todo crearemos una base de datos llamada Java o el nombre que uds quieran darle.
create database java;
Luego procedemos a crear nuestra tabla asignatura
create table asignatura(
id int auto_increment primary key,
nombre varchar (20) not null);
Con nuestra Base de Datos creada procedemos a crear nuestro código en java
usando NetBeans IDE 6.5.1.
Creamos un nuevo proyecto... java application con el nombre de DataBase
(PD: Haz click para ampliar las imagenes)

luego creamos un nuevo package en nuestro proyecto con el nombre de "cl.ejemplo.tap", luego en nuestro package creamos una nueva java class con el nombre de "Database"
En nuestra clase "Database" pondremos el siguiente código :
Despues de haber terminado nuestra clase "Database" la cual se encargara de hacer la conexión a nuestra Base De Datos MySQL, creamos un nuevo proyecto igual que el anterior y le damos el nombre de "BoAsign", luego creamos 2 nuevos package el primero con el nombre de "asignatura" y el segundo con el nombre "bo", en el package "asignatura" creamos una nueva java class con el nombre de "Asignatura" y en el package "bo" creamos una nueva java class con el nombre de "BOAsignatura"....
tendria que quedarles asi....

luego en nuestra clase "Asignatura" pondremos el siguiente código:
y en nuestra clase "BOAsignatura" pondremos el siguiente código :
PD: en esta linea tienen que poner su contraseña de MySQL y la base de datos que crearon para este ejemplo
this.db=new Database("localhost","root","(aqui su contraseña de MySql)","com.mysql.jdbc.Driver","(base de datos que uds crearon o la que dimos de ejemplo)");
luego de terminar las 2 clases haremos lo siguiente .... nos bamos a nuestro proyecto "BoAsign" luego a hacemos click derecho sobre la carpeta libraries y pinchamos en "add project " luego seleccionamos nuestro proyecto "DataBase" y lo añadimos...

ahora crearemos un nuevo proyecto con el nombre de "GUIAsignaturas" ,el cual tendra 3 package con los siguientes nombres
1) "gui"
2)"guiasignaturas"
3)"model",
en el primer package creamos un nuevo jFrame Form y le damos el nombre de "VentanaPrincipal" , en el segundo package pondremos la clase main que aparece por defecto y en el tercer package creamos un nuevo java class con el nombre de "ModeloTabla".
En nuestro jFrameForm llamado "VentanaPrincipal" creamos el siguiente diseño de ventana:

y el código de la "ventanaPricipal" sera el siguiente :
luego en nuestra clase main pondremos el siguiente codigo:
y en la clase "ModeloTabla" el siguiente codigo:
Ahora añadiremos nuestros proyectos "DataBase" y "BoAsign" a la librari de nuestro proyecto "GUIAsignaturas", tambien añadiremos en la Librari de "GUIAsignaturas" la libreria "Mysql JDBC Driver" (ojo pinchar donde dice add Library , no en add project) .

y esto es lo que tendria que quedar al terminar el ejemplo al costado izquierdo :

Bueno amigos cualquier duda, consulta ,critica etc es bienvenida por que todos los dias se aprende algo nuevo.
y como es costumbre aqui les dejo el ejemplo llegar y usarlo (con sus respectivas instrucciones por supuesto)
nos Vemos en otro post adios
DESCARGAR EJEMPLO
Luego procedemos a crear nuestra tabla asignatura
create table asignatura(
id int auto_increment primary key,
nombre varchar (20) not null);
Con nuestra Base de Datos creada procedemos a crear nuestro código en java
usando NetBeans IDE 6.5.1.
Creamos un nuevo proyecto... java application con el nombre de DataBase
(PD: Haz click para ampliar las imagenes)

luego creamos un nuevo package en nuestro proyecto con el nombre de "cl.ejemplo.tap", luego en nuestro package creamos una nueva java class con el nombre de "Database"
En nuestra clase "Database" pondremos el siguiente código :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package cl.ejemplo.tap;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author pedro Astete
*/
public class Database {
private Connection con;
private String host;
private String user;
private String password;
private String db;
//private String driverClassName;
public Database(String host, String user, String password, String driverClassName, String db) throws Exception {
try {
this.host = host;
this.user = user;
this.password = password;
this.db = db;
Class.forName(driverClassName).newInstance();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void conectar() throws Exception {
this.con = DriverManager.getConnection("jdbc:mysql://" + host + "/" + db, user, password);
}
public void actualizar(String sql) throws Exception {
Statement stmt = this.con.createStatement();
stmt.executeUpdate(sql);
}
public ResultSet obtenerDatos(String sql) throws Exception {
Statement stmt = this.con.createStatement();
ResultSet rs = stmt.executeQuery(sql);
return rs;
}
}
Despues de haber terminado nuestra clase "Database" la cual se encargara de hacer la conexión a nuestra Base De Datos MySQL, creamos un nuevo proyecto igual que el anterior y le damos el nombre de "BoAsign", luego creamos 2 nuevos package el primero con el nombre de "asignatura" y el segundo con el nombre "bo", en el package "asignatura" creamos una nueva java class con el nombre de "Asignatura" y en el package "bo" creamos una nueva java class con el nombre de "BOAsignatura"....
tendria que quedarles asi....

luego en nuestra clase "Asignatura" pondremos el siguiente código:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package asignatura;
/**
*
* @author Pedro Astete
*/
public class Asignatura {
private int id;
private String nombre;
public Asignatura(int id, String nombre) {
this.id = id;
this.nombre = nombre;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
@Override
public String toString() {
return this.getNombre();
}
}
y en nuestra clase "BOAsignatura" pondremos el siguiente código :
PD: en esta linea tienen que poner su contraseña de MySQL y la base de datos que crearon para este ejemplo
this.db=new Database("localhost","root","(aqui su contraseña de MySql)","com.mysql.jdbc.Driver","(base de datos que uds crearon o la que dimos de ejemplo)");
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package bo;
import cl.ejemplo.tap.Database;
import asignatura.Asignatura;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Collection;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Pedro Astete
*/
public class BOAsignatura {
Database db;
public BOAsignatura() throws Exception {
try {
this.db = new Database("localhost", "root", "pedro", "com.mysql.jdbc.Driver", "java");
this.db.conectar();
} catch (Exception ex) {
Logger.getLogger(BOAsignatura.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void addAsignatura( String nombre) throws Exception {
try {
this.db.actualizar("insert into asignatura (nombre) values('" + nombre + "'"+");");
} catch (Exception ex) {
Logger.getLogger(BOAsignatura.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void deleteAsignatura(String id) {
try {
this.db.actualizar("delete from asignatura where id='" + id +"'");
} catch (Exception ex) {
Logger.getLogger(BOAsignatura.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void updateAsignatura( String nombre,int id) throws Exception {
try {
this.db.actualizar("update asignatura set nombre = '" + nombre + "' where id=" + id);
} catch (Exception ex) {
Logger.getLogger(BOAsignatura.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void updateId(int id)throws Exception{
this.db.actualizar("update asignatura set id = "+id);
}
public void updateNombre(String nombre)throws Exception {
this.db.actualizar("update asignatura set nombre = '"+nombre+"'");
}
public Asignatura getAsignatura(int id) {
try {
ResultSet rs = this.db.obtenerDatos("select * from asignatura where id="+id);
rs.next();
return new Asignatura(rs.getInt("id"), rs.getString("nombre"));
} catch (Exception ex) {
Logger.getLogger(BOAsignatura.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
public ArrayList getAsignaturas() {
try {
ArrayList arr = new ArrayList();
ResultSet rs = this.db.obtenerDatos("select * from asignatura order by id ");
while (rs.next()) {
arr.add(new Asignatura(rs.getInt("id"), rs.getString("nombre")));
}
return arr;
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
}
luego de terminar las 2 clases haremos lo siguiente .... nos bamos a nuestro proyecto "BoAsign" luego a hacemos click derecho sobre la carpeta libraries y pinchamos en "add project " luego seleccionamos nuestro proyecto "DataBase" y lo añadimos...

ahora crearemos un nuevo proyecto con el nombre de "GUIAsignaturas" ,el cual tendra 3 package con los siguientes nombres
1) "gui"
2)"guiasignaturas"
3)"model",
en el primer package creamos un nuevo jFrame Form y le damos el nombre de "VentanaPrincipal" , en el segundo package pondremos la clase main que aparece por defecto y en el tercer package creamos un nuevo java class con el nombre de "ModeloTabla".
En nuestro jFrameForm llamado "VentanaPrincipal" creamos el siguiente diseño de ventana:

y el código de la "ventanaPricipal" sera el siguiente :
/*
* VentanaPrincipal.java
*
* Created on 8 de julio de 2009, 04:13 PM
*/
package gui;
import bo.BOAsignatura;
import model.ModeloTabla;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultComboBoxModel;
/**
*
* @author Pedro Astete
*/
public class VentanaPrincipal extends javax.swing.JFrame {
BOAsignatura bo;
private String nombreasignatura;
private String nombreEliAsig;
/** Creates new form VentanaPrincipal */
public VentanaPrincipal() {
try {
this.bo = new BOAsignatura();
} catch (Exception ex) {
Logger.getLogger(VentanaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("Me caí !!!");
}
initComponents();
// String[] columnas = {" ID", "NOMBRE"};
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
//
private void initComponents() {
cmbAsignaturas = new javax.swing.JComboBox();
btnAgregar = new javax.swing.JButton();
txtNombre = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
txtEliminar = new javax.swing.JTextField();
btnEliminar = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
MiTabla = new javax.swing.JTable();
btnMostrar = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setBackground(new java.awt.Color(51, 204, 0));
setForeground(java.awt.Color.white);
setResizable(false);
cmbAsignaturas.setModel(new DefaultComboBoxModel(this.bo.getAsignaturas().toArray()));
cmbAsignaturas.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cmbAsignaturasActionPerformed(evt);
}
});
btnAgregar.setText("Agregar");
btnAgregar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAgregarActionPerformed(evt);
}
});
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
jLabel1.setForeground(new java.awt.Color(51, 0, 51));
jLabel1.setText("Agregar Asignatura");
jLabel1.setOpaque(true);
btnEliminar.setText("Eliminar");
btnEliminar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnEliminarActionPerformed(evt);
}
});
MiTabla.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{},
{},
{},
{}
},
new String [] {
}
));
jScrollPane1.setViewportView(MiTabla);
btnMostrar.setText("Mostrar Asiganturas");
btnMostrar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnMostrarActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(107, 107, 107)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 118, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(txtEliminar, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txtNombre, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 138, Short.MAX_VALUE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(btnEliminar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btnAgregar, javax.swing.GroupLayout.DEFAULT_SIZE, 89, Short.MAX_VALUE))
.addGap(8, 8, 8)
.addComponent(cmbAsignaturas, 0, 122, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(btnMostrar, javax.swing.GroupLayout.DEFAULT_SIZE, 375, Short.MAX_VALUE)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(30, 30, 30)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtNombre, javax.swing.GroupLayout.DEFAULT_SIZE, 23, Short.MAX_VALUE)
.addComponent(btnAgregar)
.addComponent(cmbAsignaturas, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtEliminar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnEliminar))
.addGap(62, 62, 62)
.addComponent(btnMostrar)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
pack();
}//
private void btnAgregarActionPerformed(java.awt.event.ActionEvent evt) {
try {
this.nombreasignatura = txtNombre.getText();
this.bo.addAsignatura(nombreasignatura);
cmbAsignaturas.setModel(new DefaultComboBoxModel(this.bo.getAsignaturas().toArray()));
MiTabla.setModel(new ModeloTabla(this.bo.getAsignaturas()));
} catch (Exception ex) {
Logger.getLogger(VentanaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {
try {
this.nombreEliAsig = txtEliminar.getText();
this.bo.deleteAsignatura(nombreEliAsig);
cmbAsignaturas.setModel(new DefaultComboBoxModel(this.bo.getAsignaturas().toArray()));
MiTabla.setModel(new ModeloTabla(this.bo.getAsignaturas()));
} catch (Exception ex) {
Logger.getLogger(VentanaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void btnMostrarActionPerformed(java.awt.event.ActionEvent evt) {
MiTabla.setModel(new ModeloTabla(this.bo.getAsignaturas()));
//MiTabla.setValueAt(MiTabla, WID, WIDTH);
/* ModeloTabla m=(ModeloTabla) MiTabla.getModel();
String rut= (String) m.getValueAt(MiTabla.getSelectedRow(),0);
System.out.println(rut);*/
// MiTabla.setValueAt(MiTabla.getSelectedRow(),1, 2);
}
private void cmbAsignaturasActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
/*
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new VentanaPrincipal().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JTable MiTabla;
private javax.swing.JButton btnAgregar;
private javax.swing.JButton btnEliminar;
private javax.swing.JButton btnMostrar;
private javax.swing.JComboBox cmbAsignaturas;
private javax.swing.JLabel jLabel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextField txtEliminar;
private javax.swing.JTextField txtNombre;
// End of variables declaration
}
luego en nuestra clase main pondremos el siguiente codigo:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package guiasignaturas;
import gui.VentanaPrincipal;
/**
*
* @author Pedro Astete
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new VentanaPrincipal().setVisible(true);
}
}
y en la clase "ModeloTabla" el siguiente codigo:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package model;
import bo.BOAsignatura;
import asignatura.Asignatura;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.table.AbstractTableModel;
/**
*
* @author Pedro Astete
*/
public class ModeloTabla extends AbstractTableModel {
BOAsignatura bo;
String[] columnas = {"ID", "NOMBRE"};
Object[][] datos;
public ModeloTabla(ArrayList datos){
try {
this.bo = new BOAsignatura();
} catch (Exception ex) {
Logger.getLogger(ModeloTabla.class.getName()).log(Level.SEVERE, null, ex);
}
this.datos= new Object[datos.size()][2];
int i=0;
for (Iterator it = datos.iterator(); it.hasNext();) {
Asignatura p = (Asignatura) it.next();
this.datos[i][0] = p.getId();
this.datos[i][1] = p.getNombre();
this.datos[i][1] = p.getNombre();
i++;
}
}
public int getColumnCount() {
return this.columnas.length;
}
public int getRowCount() {
return this.datos.length;
}
@Override
public String getColumnName(int col) {
return columnas[col];
}
public Object getValueAt(int rowIndex, int columnIndex) {
return datos[rowIndex][columnIndex];
}
@Override
public void setValueAt(Object value, int row, int col) {
datos[row][col] = value;
//fireTableCellUpdated(this.bo.hashCode(), 4);
fireTableCellUpdated(row, col);
}
Ahora añadiremos nuestros proyectos "DataBase" y "BoAsign" a la librari de nuestro proyecto "GUIAsignaturas", tambien añadiremos en la Librari de "GUIAsignaturas" la libreria "Mysql JDBC Driver" (ojo pinchar donde dice add Library , no en add project) .

y esto es lo que tendria que quedar al terminar el ejemplo al costado izquierdo :

Bueno amigos cualquier duda, consulta ,critica etc es bienvenida por que todos los dias se aprende algo nuevo.
y como es costumbre aqui les dejo el ejemplo llegar y usarlo (con sus respectivas instrucciones por supuesto)
nos Vemos en otro post adios
DESCARGAR EJEMPLO


4 comentarios:
Pedro, me pareció un post interesante BUT!!,
Cuida tu ortografía , te recomiendo que uses el Windows live writter
Es una herramienta que sirve para editar tus post, tal cual escribes un documento
En el Microsoft Word y adivina 1313 trae corrector de ortografía :P , te felicito por
Tu iniciativa del blog SALUDOS!
esta super bueno el post y es una excelente idea postear estas cosas.
pd: tu tambien cuida tu ortografia chango! XD. Yo uso Google Chrome y me corrige cualquier cosa que este escribiendo en cualquier pagina.
[url=http://www.ganar-dinero-ya.com][img]http://www.ganar-dinero-ya.com/ganardinero.jpg[/img][/url]
[b]Una gran guia de ganar dinero[/b]
Nosotros hemos hallado la mejor guia en internet de como ganar dinero internet. Como fue de utilidad a nosotros, tambien les puede ser de utilidad a ustedes. No son solo formas de ganar dinero con su pagina web, hay todo tipo de metodos para ganar dinero en internet...
[b][url=http://www.ganar-dinero-ya.com][img]http://www.ganar-dinero-ya.com/dinero.jpg[/img][/url]Te recomendamos entrar a [url=http://www.ganar-dinero-ya.com/]Ganar dinero desde casa[/url][url=http://www.ganar-dinero-ya.com][img]http://www.ganar-dinero-ya.com/dinero.jpg[/img][/url][/b]
Fantástico página, si Yo no estoy en sintonía con algunas cosas que escribió pero derecho en su aspecto general hasta que esté es un buen punto de observación ! A mi me encanta [url=http://www.dinerogratispokeronline.com/]Dinero Gratis Poker Online[/url] ....
Publicar un comentario en la entrada