Вы находитесь на странице: 1из 11

Universidad Nacional del Altiplano Puno

Escuela Profesional de Ingeniera de Sistemas


CURSO: TECNOLOGA DE DESARROLLO DE APLICACIONES

GUA ACADMICA Nro. 21

TEMA: JAVA Y MYSQL

Apellidos y Nombres: Nro. Matrcula: .

OBJETIVOS:

Aprender la programacin Visual en el Lenguaje Java con MySQL

REQUERIMIENTOS:

PC con Windows.
jdk-6u10-windows-i586-p.exe
netbeans-6.5-ml-windows.exe
Mysql-Server
Mysql-gui-tools

PARTE 1: EJEMPLOS DE JAVA Y MYSQL

1.1 CREAR E INSERTAR DATOS EN MYSQL

a. Ejecute el MySQL Query Browser, y especifique los parmetros de conexin: Store


Connection: local, Server Host: localhost, Port: 3306, Username: root, Password: <En
blanco o la contrasea previamente definida>, Default Schema(Base de datos): test. Luego
haga clic en OK para continuar.

b. En el SQL Query Area ejecute la siguiente sentencia SQL, e indique los resultados
obtenidos:
CREATE DATABASE sistemas;

Resultados:

Ing. Juan Antonio Flores Moroco 1


Universidad Nacional del Altiplano Puno
Escuela Profesional de Ingeniera de Sistemas
CURSO: TECNOLOGA DE DESARROLLO DE APLICACIONES

c. Cierre el MySQL Query Browser y vuelva a ejecutarlo, cambie el Default Schema:


sistemas, para que la base de datos por defecto sea el sistemas.

d. Ejecute la siguiente sentencia SQL, e indique los resultados obtenidos:


CREATE TABLE clientes
(
codigo int(3) NOT NULL default '0',
nombre varchar(40) default NULL,
direccion varchar(50) default NULL,
PRIMARY KEY (codigo)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO clientes (codigo, nombre, direccion) VALUES


(1, 'Pedro Linares', 'Jr Ichupata 134'),
(2, 'Juan Loza', 'Jr Puno 123'),
(3, 'Jose Cruz ', 'Av El Sol 1234'),
(4, 'Ruminda Linarez Aza', 'Jr Mariscal 111');

Resultados:

1.1 EJEMPLO DE REGISTRO

A continuacin desarrollaremos una Aplicacin que maneja tablas del MySQL.

a. Cree un nuevo proyecto de tipo Java Application y en la opcin Project Name coloque
pRegistro, y en la opcin Create Main Class coloque: pregistro.CRegistro, luego haga
click en Finish

b. Haga Click derecho sobre el proyecto pRegistro y luego seleccione la opcin


Propiedades

Ing. Juan Antonio Flores Moroco 2


Universidad Nacional del Altiplano Puno
Escuela Profesional de Ingeniera de Sistemas
CURSO: TECNOLOGA DE DESARROLLO DE APLICACIONES

c. En Categoras seleccione Libraries y luego haga click en Add JAR/Flder.

d. Seleccione el archivo mysql-connector-java-5.1.6-bin.jar ubicado en la carpeta:


C:\Archivos de programa\NetBeans 6.5\ide10\modules\ext, luego haga click en Abrir.

e. El archivo seleccionado se encontrar en la lista de las librerias compiladas, luego haga


click en OK para que la librera sea agregada.

Ing. Juan Antonio Flores Moroco 3


Universidad Nacional del Altiplano Puno
Escuela Profesional de Ingeniera de Sistemas
CURSO: TECNOLOGA DE DESARROLLO DE APLICACIONES

f. Ahora tenemos que crear la clase CFrameRegistro, para lo cual haga click derecho sobre
el package pregistro ubicada en la parte izquierda superior del NetBeans, selecione la
opcin New, luego haga click en Java Class. El NetBeans le mostrar la Ventana New Java
Class, en la opcin Class Name coloque CFrameRegistro, fijese que el archivo que se va a
crear pertenece al proyecto pRegistro y al Package pregistro, luego haga click en Finish.

g. Copie el siguiente cdigo (Archivo: CFrameRegistro.java):


package pregistro;

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

class CFrameRegistro extends JFrame implements ActionListener


{
private JButton btnOK;
private JButton btnCancelar;
private JTextField txtCodigo;
private JTextField txtNombre;
private JTextField txtDireccion;
private Connection conexion;
private char TipoOperacion;

public CFrameRegistro(Connection con, String Cod, String Nombre,


String Direccion, char Tipo)
{
conexion = con;
TipoOperacion = Tipo;
setSize(260,150);
setLocation(220,190);
Container P = getContentPane();

JPanel panelFR = new JPanel();


panelFR.setLayout(new FlowLayout());
panelFR.add(new JLabel("Cdigo"));
txtCodigo = new JTextField(15);
txtCodigo.setText(Cod);
if (Tipo == 'A')
{
txtCodigo.setEditable(false);
setTitle("Modificar datos");
}
else
setTitle("Nuevos datos");
panelFR.add(txtCodigo);

panelFR.add(new JLabel("Nombre"));
txtNombre = new JTextField(15);
txtNombre.setText(Nombre);
panelFR.add(txtNombre);

panelFR.add(new JLabel("Direccin"));
txtDireccion = new JTextField(15);

Ing. Juan Antonio Flores Moroco 4


Universidad Nacional del Altiplano Puno
Escuela Profesional de Ingeniera de Sistemas
CURSO: TECNOLOGA DE DESARROLLO DE APLICACIONES
txtDireccion.setText(Direccion);
panelFR.add(txtDireccion);

btnOK = new JButton("OK");


btnCancelar = new JButton("Cancelar");
panelFR.add(btnOK);
panelFR.add(btnCancelar);
btnOK.addActionListener(this);
btnCancelar.addActionListener(this);
P.add(panelFR,"Center");
}
public void actionPerformed(ActionEvent evt)
{
if (evt.getSource() == btnOK)
{
if (txtCodigo.getText().trim().equals("") ||
txtNombre.getText().trim().equals(""))
{
JOptionPane.showMessageDialog(this,
"Campo Cdigo y Nombre deben contener datos!\n",
"Error: ", JOptionPane.ERROR_MESSAGE);
}
else
{
try
{
Statement sentencia = conexion.createStatement();
String sentenciaSQL = null;
if (TipoOperacion == 'I')
sentenciaSQL = "INSERT INTO clientes (" + "codigo,nombre,direccion) "+
"VALUES ("+
Integer.parseInt(txtCodigo.getText())+", '"+
txtNombre.getText() + "', '" +
txtDireccion.getText()+"')";
else
sentenciaSQL = "UPDATE clientes SET nombre = '" +
txtNombre.getText() + "', direccion = '" +
txtDireccion.getText()+"' WHERE codigo = " +
Integer.parseInt(txtCodigo.getText());

sentencia.executeUpdate(sentenciaSQL);
sentencia.close();
dispose();
}
catch (SQLException eSQL)
{
eSQL.printStackTrace();
JOptionPane.showMessageDialog(this,
"No fue posible realizar la operacin!\n" +
"Mensaje: " + eSQL.getMessage(),
"Error", JOptionPane.ERROR_MESSAGE);
}
}
}
if (evt.getSource() == btnCancelar)
{
dispose();
}
}
}

h. Ahora tenemos que crear la clase CModeloTablaBD, para lo cual haga click derecho
sobre el package pregistro ubicada en la parte izquierda superior del NetBeans, selecione la
opcin New, luego haga click en Java Class. El NetBeans le mostrar la Ventana New Java
Class, en la opcin Class Name coloque CModeloTablaBD, fijese que el archivo que se va
a crear pertenece al proyecto pRegistro y al Package pregistro, luego haga click en Finish.
Ing. Juan Antonio Flores Moroco 5
Universidad Nacional del Altiplano Puno
Escuela Profesional de Ingeniera de Sistemas
CURSO: TECNOLOGA DE DESARROLLO DE APLICACIONES

i. Copie el siguiente cdigo (Archivo: CModeloTablaBD.java):


package pregistro;

import java.util.*;
import javax.swing.table.*;

class CModeloTablaBD extends AbstractTableModel


{
private ArrayList lineas = null;
private String[] columnas = null;
private boolean[] colEditable;

public CModeloTablaBD(ArrayList lin, String[] col, boolean[] editable)


{
setLineas(lin);
setColumnas(col);
colEditable = editable;
}
public ArrayList getLineas()
{
return lineas;
}
public void setLineas(ArrayList datos)
{
lineas = datos;
}
public String[] getColumnas()
{
return columnas;
}
public void setColumnas(String[] nombres)
{
columnas = nombres;
}
public int getColumnCount()
{
return columnas.length;
}
public int getRowCount()
{
return lineas.size();
}
public String getColumnName(int numCol)
{
return columnas[numCol];
}
public boolean isCellEditable(int numCol)
{
return colEditable[numCol];
}
public Object getValueAt(int numLin, int numCol)
{
Object[] linea = (Object[])getLineas().get(numLin);
return linea[numCol];
}
public void setValueAt(Object dado, int numLin, int numCol)
{
if (isCellEditable(numCol))
{
Object[] linea = (Object[])getLineas().get(numLin);
linea[numCol] = dado;
fireTableDataChanged();
}
}
public void addRow(Object[] datos)
{

Ing. Juan Antonio Flores Moroco 6


Universidad Nacional del Altiplano Puno
Escuela Profesional de Ingeniera de Sistemas
CURSO: TECNOLOGA DE DESARROLLO DE APLICACIONES
getLineas().add(datos);
fireTableDataChanged();
}
public void removeRow(int numLin)
{
getLineas().remove(numLin);
fireTableDataChanged();
}
public Class getColumnClass(int numCol)
{
Object[] linea = (Object[])getLineas().get(0);
return linea[numCol].getClass();
}
}

j. Modifique, agregue y ejecute el siguiente cdigo (Archivo: CRegistro.java):


package pregistro;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;

public class CRegistro extends JFrame implements ActionListener


{
private JButton btnSalir;
private JButton btnInsertar;
private JButton btnModificar;
private JButton btnEliminar;
private JButton btnBuscarNombre;
private JTextField nombre;
private Connection con;
private CModeloTablaBD modelo;
private JTable tabla;
private Statement sentencia;
private ResultSet registros;

public CRegistro()
{
addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e){System.exit(0);}});
setTitle("Consulta a Base de Datos");
setSize(530,320);
setLocation(100,100);
Container P = getContentPane();
P.setLayout(new BorderLayout());

// Consulta a Base de Datos


con = conexionBD("jdbc:mysql://localhost:3306/sistemas", "root", "");

// Creacin del primer panel


JPanel PNorte = new JPanel();
PNorte.setLayout(new FlowLayout());
PNorte.add(new JLabel("Digite nombre"));
nombre = new JTextField(13);
PNorte.add(nombre);
btnBuscarNombre = new JButton("Buscar");
PNorte.add(btnBuscarNombre);
btnBuscarNombre.addActionListener(this);
P.add(PNorte, "North");

// creacin de la tabla
// creacin de un array para insertar dinmicamente los objetos
ArrayList datos = new ArrayList();

Ing. Juan Antonio Flores Moroco 7


Universidad Nacional del Altiplano Puno
Escuela Profesional de Ingeniera de Sistemas
CURSO: TECNOLOGA DE DESARROLLO DE APLICACIONES
// creacin de un array para los ttulos en el encabezado
String[] columnas = new String[] { "Cdigo", "Nombre", "Direccin"};

// creacin de un array para identificar si el registro es modificable o no


boolean[] edicion = {false, false, false};

// creacin de la tabla basada en el modelo ModeloTabelaBD


modelo = new CModeloTablaBD(datos, columnas, edicion);
tabla = new JTable(modelo);
tabla.getColumnModel().getColumn(0).setPreferredWidth(50);
tabla.getColumnModel().getColumn(0).setResizable(false);
tabla.getColumnModel().getColumn(1).setPreferredWidth(200);
tabla.getColumnModel().getColumn(1).setResizable(true);
tabla.getColumnModel().getColumn(2).setPreferredWidth(240);
tabla.getColumnModel().getColumn(2).setResizable(true);
tabla.getTableHeader().setReorderingAllowed(false);

tabla.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
tabla.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JScrollPane rolagemTabela = new JScrollPane(tabla);
P.add(rolagemTabela, "Center");

// creacin de un tercer panel


JPanel PSur = new JPanel();
btnInsertar = new JButton("Nuevo");
btnModificar = new JButton("Modificar");
btnEliminar = new JButton("Eliminar");
btnSalir = new JButton("Salir");
PSur.add(btnInsertar);
PSur.add(btnModificar);
PSur.add(btnEliminar);
PSur.add(btnSalir);
P.add(PSur, "South");
btnInsertar.addActionListener(this);
btnModificar.addActionListener(this);
btnEliminar.addActionListener(this);
btnSalir.addActionListener(this);
}
public void actionPerformed(ActionEvent evt)
{
Object origem = evt.getSource();
if (origem == btnBuscarNombre)
{
Selecion("SELECT * FROM clientes WHERE nombre LIKE '%" +
nombre.getText() + "%' ORDER BY nombre");
}
if (origem == btnInsertar)
{
CFrameRegistro frame = new CFrameRegistro(con, null, null, null, 'I');
frame.show();
}
if (origem == btnModificar)
{
if (tabla.getSelectedRow()>=0)
{
CFrameRegistro frame = new CFrameRegistro(con,
modelo.getValueAt(tabla.getSelectedRow(),0).toString(),
modelo.getValueAt(tabla.getSelectedRow(),1).toString(),
modelo.getValueAt(tabla.getSelectedRow(),2).toString(), 'A');
frame.show();
}
else
JOptionPane.showMessageDialog(this,
"No existe registro seleccionado!\n",
"Mensaje:", JOptionPane.WARNING_MESSAGE);
}
if (origem == btnEliminar)
{

Ing. Juan Antonio Flores Moroco 8


Universidad Nacional del Altiplano Puno
Escuela Profesional de Ingeniera de Sistemas
CURSO: TECNOLOGA DE DESARROLLO DE APLICACIONES
if (tabla.getSelectedRow()>=0)
{
try
{
if (JOptionPane.showConfirmDialog(null,"Confirma Eliminacin?",
"Confirmacin", JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE) == 0)
{
sentencia = con.createStatement();
String sentencaSQL ="DELETE FROM clientes WHERE codigo= " +
modelo.getValueAt(tabla.getSelectedRow(),0).toString();
sentencia.executeUpdate(sentencaSQL);
sentencia.close();
Selecion("SELECT * FROM clientes WHERE nombre LIKE '%" +
nombre.getText() + "%' ORDER BY nombre");
}
}
catch (SQLException eSQL)
{
eSQL.printStackTrace();
JOptionPane.showMessageDialog(this,
"No fue posible realizar la operacin!\n" +
"Mensaje: " + eSQL.getMessage(),
"Error: ", JOptionPane.ERROR_MESSAGE);
}
}
else
JOptionPane.showMessageDialog(this,
"No existe registro seleccionado!\n",
"Mensaje:", JOptionPane.WARNING_MESSAGE);
}
if (origem == btnSalir)
{
try
{
con.close();
System.exit(0);
}
catch (SQLException eSQL)
{
// Ejecucin de SQL
eSQL.printStackTrace();
JOptionPane.showMessageDialog(this,
"No fue posible desconectar la Base de datos!\n" +
"Mensaje: " + eSQL.getMessage(),
"Error: ", JOptionPane.ERROR_MESSAGE);
}
}
}
public void Selecion(String sentencaSQL)
{
// borrar todas las filas de la tabla
for (int i= modelo.getRowCount()-1; i >= 0; i--)
modelo.removeRow(i);
try
{
sentencia = con.createStatement();
registros = sentencia.executeQuery(sentencaSQL);
boolean proximoRegistro = registros.next();
if (!proximoRegistro)
{
JOptionPane.showMessageDialog(this,
"Ningn registro fue encontrado!",
"Mensaje: ", JOptionPane.WARNING_MESSAGE);
}
else
do
{

Ing. Juan Antonio Flores Moroco 9


Universidad Nacional del Altiplano Puno
Escuela Profesional de Ingeniera de Sistemas
CURSO: TECNOLOGA DE DESARROLLO DE APLICACIONES
modelo.addRow(new Object[]{
new Integer(Integer.parseInt(registros.getString("codigo"))),
registros.getString("nombre"),
registros.getString("direccion") });
} while (registros.next());
sentencia.close();
}
catch (SQLException eSQL)
{
eSQL.printStackTrace();
JOptionPane.showMessageDialog(this,
"No fue posible obtener los datos!\n" +
"Mensaje: " + eSQL.getMessage(),
"Error: ", JOptionPane.ERROR_MESSAGE);
}
}
public Connection conexionBD(String sFuente, String sUsuario, String sPasswd)
{
Connection conexion = null;
try
{
System.setProperty("jdbc.drivers","com.mysql.jdbc.Driver");
conexion = DriverManager.getConnection(sFuente, sUsuario, sPasswd);
}
catch (SQLException eSQL)
{
// ejecucin de SQL
eSQL.printStackTrace();
JOptionPane.showMessageDialog(this,
"Fallo la conexin con la Base de Datos!\n" +
"Mensaje: " + eSQL.getMessage(),
"Error: ", JOptionPane.ERROR_MESSAGE);
}
catch (Exception e)
{
// dems excepciones
e.printStackTrace();
JOptionPane.showMessageDialog(this,
"Fallo la conexin con la Base de datos!\n" +
"Mensaje: " + e.getMessage(),
"Error: ", JOptionPane.ERROR_MESSAGE);
}
return conexion;
}
public static void main(String args[])
{
CRegistro fr = new CRegistro();
fr.setVisible(true);
}
}

Resultados:

Ing. Juan Antonio Flores Moroco 10


Universidad Nacional del Altiplano Puno
Escuela Profesional de Ingeniera de Sistemas
CURSO: TECNOLOGA DE DESARROLLO DE APLICACIONES

Ing. Juan Antonio Flores Moroco 11

Вам также может понравиться