Está en la página 1de 15

Guia Java Mysql

Prof Orlando Ruiz

Acceso de Base de datos Mysql desde Java


Vamos a hacer un pequeo proyecto en java que nos permita conectarnos a la base de
datos MySQL consultar y actualizar una tabla en Mysql. Haremos un ejemplo sencillo no
entraremos en complicaciones. La idea de solo 4 campos es que nos permite trabajar con
un ejemplo sencillo y asi trabajar con las 5 opereciones basicas de una Base de datos Las
de consulta. Que son de 2 tipos. La 1era es una consulta de un registro por una condicion
determinada y la 2da La consulta por lote. Bien sea que listemos todos los registros de la
tabla o un lote que cumpla una condicion determinada. Y las de actualizacion 1.- ingreso,
modificacin y eliminacion de un registro de la tabla.
Para empesar hemos creado una base de datos con el nombre de bd_base_01, y una
tabla llamada persona. Que contiene 4 campos. Cedula del tipo Varcha esta definicion es
equivalente a la que hemos usado en java del tipo String. Nombre Varcha, Telefono
Varcha y Sueldo de tipo float.

El siquiente paso es instalar el driver para poder realizar la conexin entre java
y Xampp de mysql.
(mysql-connector-java-5.1.7-bin.jar) Este es el driver o conector para instalarlo en el
proyecto se siguen los siquientes pasos. Hay muchas versiones de este driver pero este
nos sirve.
1.- Se habre el editor ecplise.
Click derecho en el nombre del proyecto.
2.- Click en Build Path Configure Build path
3. Elegir biblioteca
Aadir Jar externo
Oprimir el boton

Add External Jars

Seleccionar en la carpeta donde se encuentra el driver e instalar en el proyecto.


Establecer la conexin con la base de datos

conexion = DriverManager.getConnection Connection


("jdbc:mysql://localhost/bd_base_01","root", "la_clave");
jdbc:mysql porque estamos utilizando un driver jdbc para MySQL, que es el que nos
hemos bajado.
localhost porque el servidor de base de datos, en mi caso, est en el mismo
ordenador en el que voy a correr el prorama java.
bd_base_01 es el nombre de la base de datos que he creado dentro de mysql. Se
debe poner la base de datos dentro del servidor de MySQL a la que se quiere uno
conectar.
Realizar una consulta
// Preparamos la consulta
Statement s = conexion.createStatement();
ResultSet rs = s.executeQuery ("select * from persona");

El executeQuery(). Se utiliza para Consultar la tabla


El executeUpdate() Se utiliza para actualizar la tabla Ingreso, Modificacin y
Eliminar registros.

Una vez que el "puntero" est apuntando a un registro, los


mtodos getInt(), getString(), getDate(), etc nos van devolviendo los valores de los
campos de dicho registro.

Cerrar la conexin
conexion.close();
A continuacin mostraremos el proyecto que realiza todas las operaciones a una base de
datos.
El primer programa en un menu de opciones compusto por 4 botones.

Es un formulario muy sencillo pero lo que importa mostrar aqu es la funcionalidad y este
es el programa. Este primer programa no accesa base de datos solo es un menu que hace
llamados a otros programas que si accesan base de datos.
import java.awt.event.*;
import javax.swing.*;
public class ClassMenu extends JFrame implements ActionListener{
public static void main (String args[]){
ClassMenu Form01 = new ClassMenu();
Form01.setVisible(true);
Form01.setExtendedState(JFrame.MAXIMIZED_BOTH);
}
ClassDatos objeto = new ClassDatos();
ClassListar objeto1 = new ClassListar();
ClassAct objeto2 = new ClassAct();
JLabel JLTitulo = new JLabel("MENU PRINCIPAL");
JButton JBGrabar = new JButton("INGRESAR");
JButton JBActual = new JButton("ACTUALIZAR");
JButton JBListar = new JButton("LISTAR");
JButton JBSalir = new JButton("SALIR");
public ClassMenu(){
setLayout(null);
JLTitulo.setLocation(250,100);
JLTitulo.setSize(250,50);
add(JLTitulo);
JLTitulo.setFont(new java.awt.Font("Tahoma",0,28));
JBGrabar.setLocation(250,300);
JBGrabar.setSize(150,50);
add(JBGrabar);
JBGrabar.setFont(new java.awt.Font("Tahoma",0,14));
JBGrabar.addActionListener(this);

JBActual.setLocation(450,300);
JBActual.setSize(150,50);
add(JBActual);
JBActual.setFont(new java.awt.Font("Tahoma",0,14));
JBActual.addActionListener(this);
JBListar.setLocation(250,450);
JBListar.setSize(150,50);
add(JBListar);
JBListar.setFont(new java.awt.Font("Tahoma",0,14));
JBListar.addActionListener(this);
JBSalir.setLocation(450,450);
JBSalir.setSize(150,50);
add(JBSalir);
JBSalir.setFont(new java.awt.Font("Tahoma",0,14));
JBSalir.addActionListener(this);
}
public void actionPerformed(ActionEvent m){
if (m.getSource()==JBGrabar){
objeto.Metodo01();
}
if (m.getSource()==JBActual){
objeto2.Metodo01();
}
if (m.getSource()==JBListar){
objeto1.MetodoListar();
}
if (m.getSource()==JBSalir){
dispose();
}
}
}

El siquiente programa es un formulario con el componente Jlist. No esta ordenado pero es


un buen ejemplo de cmo se lista un lote de la base de datos sobre el componente JList

import
import
import
import

java.awt.event.ActionEvent;
java.awt.event.ActionListener;
java.sql.*;
javax.swing.*;

public class ClassListar extends Jframe implements ActionListener{


static
static
static
static

String
String
String
String

bd = "bd_base01";
login = "ORLANDO";
password = "SODLS";
url = "jdbc:mysql://localhost/"+bd;

/*
Aqu indicamos todos los valores de nuestra conecin con la base de
datos.
Bd= bd_base_01; es el nombre de nuestra base de datos.
Login= root es el usuario por defecto.
Password = .Por defecto no declaramos clave. De tenerla se coloca
url = jdbc:mysql://localhost/+bd;
jdbc:mysql es la conecin y localhost es el servidor local el
comptador en el cual estamos trabajando.
*/
Connection connection = null;
JList ListaN = new JList();
DefaultListModel modelo = new DefaultListModel();
JButton boton01 = new JButton("SALIR");
JButton boton02 = new JButton("LISTAR");
public void Metodo01(){
try{
//obtenemos el driver de para mysql
Class.forName("com.mysql.jdbc.Driver");
//obtenemos la conexin
connection = DriverManager.getConnection(url,login,password);
if (connection!=null){
System.out.println("Conexin a base de datos => "+bd+" OK ");
Statement s = connection.createStatement();
ResultSet rs = s.executeQuery ("select * from persona");
while (rs.next()) {
/* System.out.println (rs.getString (1) +" " +
rs.getString (2)+ " " +
rs.getString(3)+" "+
rs.getFloat(4
Listar por consola los datos
*/
modelo.addElement(rs.getString(1)+" "+rs.getString(2)+"
"+rs.getString(3)+" "+rs.getFloat(4));
}
connection.close();
}
} // try
catch(SQLException e){
System.out.println(e);
}catch(ClassNotFoundException e){

System.out.println(e);
}catch(Exception e){
System.out.println(e);
}
}
public void MetodoListar(){
ClassListar FListar=new ClassListar();
FListar.setVisible(true);
FListar.setExtendedState(JFrame.MAXIMIZED_BOTH);
}
public ClassListar(){
setLayout(null);
ListaN.setModel(modelo);
ListaN.setLocation(150,100);
ListaN.setSize(450,350);
add(ListaN);
boton01.setLocation(200,500);
boton01.setSize(120,50);
add(boton01);
boton01.addActionListener(this);
boton02.setLocation(400,500);
boton02.setSize(120,50);
add(boton02);
boton02.addActionListener(this);
}
public void actionPerformed(ActionEvent m){
if (m.getSource()==boton01){
dispose();
}
if (m.getSource()==boton02){
Metodo01();
}
}
}

El siquiente programa realiza el ingreso de un registro a la base de datos a traves del siquiente
formulario..

import javax.swing.*;

import java.awt.event.*;
import java.sql.*;
public class ClassDatos extends JFrame implements ActionListener{
static String bd = "bd_base01";
static String login = "root";
static String password = "";
static String url = "jdbc:mysql://localhost/"+bd;
Connection connection = null;
public void Metodo01(){
ClassDatos Form01 = new ClassDatos();
Form01.setVisible(true);
Form01.setExtendedState(JFrame.MAXIMIZED_BOTH);
}
private void MetodoIng(){
String Cedula = JTCed.getText();
Mover del formulario a las
String Nombre = JTNom.getText();
variables
String Telefono = JTTelf.getText();
float Sueldo = Float.parseFloat(JTSueldo.getText());
try{
//obtenemos el driver de para mysql
Class.forName("com.mysql.jdbc.Driver");
//obtenemos la conexin
connection = DriverManager.getConnection(url,login,password);
if (connection!=null){
System.out.println("Conexin a base de datos
Statement s = connection.createStatement();

"+bd+" OK ");

s.executeUpdate("INSERT INTO persona (Cedula, Nombre, Telefono,


Sueldo) VALUES " +
"('"+Cedula+"','"+Nombre+"','"+Telefono+"','"+Sueldo+"')");
/* Mover de las variables a la BD
/* ====comentario=====================
s.executeUpdate("INSERT INTO persona (Cedula, Nombre, Sueldo) VALUES "
+
"('"+JTCed.getText()+"','"+JTNom.getText()+"','"+JTSueldo.getText()+"'
)");
Otra forma se conseguir el ingreso del registro de manera ms directa
sin mover los datos a variables
=====fin del comentario
*/
JOptionPane.showMessageDialog(null,"REGISTRO INGRESO ");
}
connection.close();
}
} // try
catch(SQLException e){
System.out.println(e);
}catch(ClassNotFoundException e){
System.out.println(e);
}catch(Exception e){
System.out.println(e);
}

//

}
ClassDatos objeto03 = new ClassDatos();
JLabel JLTitulo = new JLabel("FORMULARIO INGRESO");
JLabel JLCed = new JLabel("CEDULA");
JLabel JLNom = new JLabel("NOMBRE");
JLabel JLTelf = new JLabel("TELEFONO");
JLabel JLSueldo = new JLabel("SUELDO");
JTextField JTCed = new JTextField();
JTextField JTNom = new JTextField();
JTextField JTTelf = new JTextField();
JTextField JTSueldo = new JTextField();
JButton JBGrabar = new JButton("GRABAR");
JButton JBSalir = new JButton("SALIR");
JButton JBLimpiar = new JButton("LIMPIAR");
public void Metodo02(){
}
public ClassDatos(){
setLayout(null);
JLTitulo.setLocation(350,100);
JLTitulo.setSize(350,50);
add(JLTitulo);
JLTitulo.setFont(new java.awt.Font("Tahoma",0,28));
JLCed.setLocation(250,200);
JLCed.setSize(150,50);
add(JLCed);
JLCed.setFont(new java.awt.Font("Tahoma",0,20));
JLNom.setLocation(250,250);
JLNom.setSize(150,50);
add(JLNom);
JLNom.setFont(new java.awt.Font("Tahoma",0,20));
JLTelf.setLocation(250,300);
JLTelf.setSize(150,50);
add(JLTelf);
JLTelf.setFont(new java.awt.Font("Tahoma",0,20));
JLSueldo.setLocation(250,350);
JLSueldo.setSize(150,50);
add(JLSueldo);
JLSueldo.setFont(new java.awt.Font("Tahoma",0,20));
JTCed.setLocation(350,200);
JTCed.setSize(150,30);
add(JTCed);
JTCed.setFont(new java.awt.Font("Tahoma",0,14));
JTNom.setLocation(350,250);
JTNom.setSize(250,30);
add(JTNom);
JTNom.setFont(new java.awt.Font("Tahoma",0,14));
JTTelf.setLocation(350,300);
JTTelf.setSize(250,30);
add(JTTelf);
JTTelf.setFont(new java.awt.Font("Tahoma",0,14));

JTSueldo.setLocation(350,350);
JTSueldo.setSize(150,30);
add(JTSueldo);
JTSueldo.setFont(new java.awt.Font("Tahoma",0,14));
JBGrabar.setLocation(150,500);
JBGrabar.setSize(150,50);
add(JBGrabar);
JBGrabar.setFont(new java.awt.Font("Tahoma",0,14));
JBGrabar.addActionListener(this);
JBLimpiar.setLocation(350,500);
JBLimpiar.setSize(150,50);
add(JBLimpiar);
JBLimpiar.setFont(new java.awt.Font("Tahoma",0,14));
JBLimpiar.addActionListener(this);
JBSalir.setLocation(550,500);
JBSalir.setSize(150,50);
add(JBSalir);
JBSalir.setFont(new java.awt.Font("Tahoma",0,14));
JBSalir.addActionListener(this);
}
public void actionPerformed(ActionEvent m){
if (m.getSource()==JBGrabar){
MetodoIng();
}
if (m.getSource()==JBSalir){
dispose();
}
if (m.getSource()==JBLimpiar){
JTCed.setText("");
JTNom.setText("");
JTTelf.setText("");
JTSueldo.setText("");
}
}
}

El siquiente programa realiza 2 actualizaciones y una consulta.


Consulta un registro por su cedula, ingresar y eliminar un registro.

import
import
import
import
public

javax.swing.*;
java.awt.*;
java.awt.event.*;
java.sql.*;
class ClassAct extends JFrame implements ActionListener{
static String bd = "bd_base01";
static String login = "root";
static String password = "";
static String url = "jdbc:mysql://localhost/"+bd;

Connection connection = null;


public void Metodo01(){
ClassAct Form01 = new ClassAct();
Form01.setVisible(true);
Form01.setExtendedState(JFrame.MAXIMIZED_BOTH);
}
private
try{

void MetodoCons(){

//obtenemos el driver de para mysql


Class.forName("com.mysql.jdbc.Driver");
//obtenemos la conexin
connection = DriverManager.getConnection(url,login,password);
if (connection!=null){
System.out.println("Conexin a base de datos consulta => "+bd+" OK ");
Statement s = connection.createStatement();
ResultSet rs = s.executeQuery ("select * from persona WHERE
Cedula='"+JTCed.getText()+"'");
rs.next();
JTNom.setText(""+rs.getString(2));
JTTelf.setText(""+rs.getString(3));
JTSueldo.setText(""+rs.getFloat(4));
connection.close();
}
} // try

Movemos los datos de


la BD al formulario

catch(SQLException e){
System.out.println(e);
}catch(ClassNotFoundException e){
System.out.println(e);
}catch(Exception e){
System.out.println(e);
}
}
private

void MetodoElim(){

String Cedula1 = JTCed.getText();


try{
//obtenemos el driver de para mysql
Class.forName("com.mysql.jdbc.Driver");
//obtenemos la conexin
connection = DriverManager.getConnection(url,login,password);
if (connection!=null){
System.out.println("Conexin a base de datos => "+bd+" OK ");
Statement s = connection.createStatement();
s.executeUpdate("DELETE FROM persona WHERE Cedula="+Cedula1);
JOptionPane.showMessageDialog(null,"REGISTRO ELIMINADO ");
connection.close();
}
} // try
catch(SQLException e){
System.out.println(e);
}catch(ClassNotFoundException e){
System.out.println(e);
}catch(Exception e){
System.out.println(e);
}
}
private

void MetodoMod(){

String Cedula1 = JTCed.getText();


String Nombre1 = JTNom.getText();
String Telefono1 = JTTelf.getText();
String Sueldo1 = JTSueldo.getText();
//
float Sueldo1 = Float.parseFloat(JTSueldo.getText());
try{
//obtenemos el driver de para mysql
Class.forName("com.mysql.jdbc.Driver");
//obtenemos la conexin
connection = DriverManager.getConnection(url,login,password);
if (connection!=null){
System.out.println("Conexin a base de datos => "+bd+" OK ");
Statement s = connection.createStatement();

s.executeUpdate("UPDATE persona set Nombre ='"+Nombre1+"',


Telefono='"+Telefono1+"', Sueldo='"+Sueldo1+"'"+
"WHERE Cedula="+Cedula1);
JOptionPane.showMessageDialog(null,"REGISTRO MODIFICADO ");
connection.close();
}
} // try
catch(SQLException e){
System.out.println(e);
}catch(ClassNotFoundException e){
System.out.println(e);
}catch(Exception e){
System.out.println(e);
}
}
//
ClassDatos objeto03 = new ClassDatos();
JLabel JLTitulo = new JLabel("FORMULARIO ACTUALIZACION");
JLabel JLCed = new JLabel("CEDULA");
JLabel JLNom = new JLabel("NOMBRE");
JLabel JLTelf = new JLabel("TELEFONO");
JLabel JLSueldo = new JLabel("SUELDO");
JTextField JTCed = new JTextField();
JTextField JTNom = new JTextField();
JTextField JTTelf = new JTextField("");
JTextField JTSueldo = new JTextField();
JButton JBCons = new JButton("BUSCAR");
JButton JBModif = new JButton("MODIFICAR");
JButton JBElim = new JButton("ELIMINAR");
JButton JBLimpiar = new JButton("LIMPIAR");
JButton JBSalir = new JButton("SALIR");

public ClassAct(){
setLayout(null);
JLTitulo.setLocation(300,100);
JLTitulo.setSize(450,50);
add(JLTitulo);
JLTitulo.setFont(new java.awt.Font("Tahoma",0,28));
JLCed.setLocation(250,200);
JLCed.setSize(150,50);
add(JLCed);
JLCed.setFont(new java.awt.Font("Tahoma",0,20));
JLNom.setLocation(250,250);
JLNom.setSize(150,50);
add(JLNom);
JLNom.setFont(new java.awt.Font("Tahoma",0,20));
JLTelf.setLocation(250,300);
JLTelf.setSize(150,50);
add(JLTelf);
JLTelf.setFont(new java.awt.Font("Tahoma",0,20));
JLSueldo.setLocation(250,350);
JLSueldo.setSize(150,50);

add(JLSueldo);
JLSueldo.setFont(new java.awt.Font("Tahoma",0,20));
JTCed.setLocation(350,200);
JTCed.setSize(150,30);
add(JTCed);
JTCed.setFont(new java.awt.Font("Tahoma",0,14));
JTNom.setLocation(350,250);
JTNom.setSize(250,30);
add(JTNom);
JTNom.setFont(new java.awt.Font("Tahoma",0,14));
JTTelf.setLocation(350,300);
JTTelf.setSize(250,30);
add(JTTelf);
JTTelf.setFont(new java.awt.Font("Tahoma",0,14));
JTSueldo.setLocation(350,350);
JTSueldo.setSize(150,30);
add(JTSueldo);
JTSueldo.setFont(new java.awt.Font("Tahoma",0,14));
JBCons.setLocation(150,500);
JBCons.setSize(150,50);
add(JBCons);
JBCons.setFont(new java.awt.Font("Tahoma",0,14));
JBCons.addActionListener(this);
JBModif.setLocation(350,500);
JBModif.setSize(150,50);
add(JBModif);
JBModif.setFont(new java.awt.Font("Tahoma",0,14));
JBModif.addActionListener(this);
JBElim.setLocation(550,500);
JBElim.setSize(150,50);
add(JBElim);
JBElim.setFont(new java.awt.Font("Tahoma",0,14));
JBElim.addActionListener(this);
JBLimpiar.setLocation(250,600);
JBLimpiar.setSize(150,50);
add(JBLimpiar);
JBLimpiar.setFont(new java.awt.Font("Tahoma",0,14));
JBLimpiar.addActionListener(this);
JBSalir.setLocation(450,600);
JBSalir.setSize(150,50);
add(JBSalir);
JBSalir.setFont(new java.awt.Font("Tahoma",0,14));
JBSalir.addActionListener(this);
}
public void actionPerformed(ActionEvent m){
if (m.getSource()==JBCons){
MetodoCons();
}

if (m.getSource()==JBModif){
MetodoMod();
}
if (m.getSource()==JBElim){
MetodoElim();
}
if (m.getSource()==JBSalir){
dispose();
}
if (m.getSource()==JBLimpiar){
JTCed.setText("");
JTNom.setText("");
JTTelf.setText("");
JTSueldo.setText("");
}
}
}

Y por ultimo para concluir este cuso de java explicaremos como crear un
ejecutable. Para ejecutar el programa sin abrir el editor ecplise.
1.- Abrimos eclipse
Click derecho al proyecto y selecionamos refrescar.
2.- Click derecho nuevamente y selecionamos exportar.
3.- Al expandir la ventana darle click a la opcion
Runnble JAR file y siguiente
4.- en esta ventana indicaran el nombre del proyecto y la direccin donde
quedara instalado el ejecutable. Oprimir el boton Finish.

Y listo nuestro ejecutable ya esta creado.

También podría gustarte