martes, 4 de diciembre de 2007

Conexion a mysql con java en netbeans parte 2

En la anterior entrada mostré como hacer una conexión de forma cencilla, y que al final nos regresaba un mensaje desde la consola del editor. Ahora procederemos a hacer una conexion un poco mas avanzada, bueno en el sentido de que lo realizaremos mediante botones y cajas de texto, algo ya mas acoplado a la realidad.

Para empezar les voy a mencionar como crear una tabla desde la consola y digitamos para entrar a mysql

shell> mysql -h host -u user -p
Enter password: ********


Ahora creamos la base de datos:

mysql> CREATE DATABASE base;

y luego debemos de crear una tabla

mysql> CREATE TABLE usuario (nombre VARCHAR(20), ciudad VARCHAR(20);
colocamos la información

mysql> INSERT INTO usuario
-> VALUES ('s','toluca');

Una ves que llenemos la tabla nos vamos a netbeans y abrimos un archivo nuevo de GUI un jFrame Form y comenzamos a colocar el codigo, pero antes de continuar olvidaba que se tienen que crear los label y textbox correspondientes a los campos que tengamos que el caso de la base de datos que creamos solo son dos(para crearlos es en el lado de diseño):

//Aqui colocamos las librerias que se requieren para que se realize la conexion

package clientes;
import java.awt.*;
import java.sql.*;
import java.awt.event.*;
import javax.swing.*;
public class dbojxs extends javax.swing.JFrame {

private Connection cnx;
Statement stmt;
ResultSet rset;


//En esta parte se encuenctra el constructor y donde creamos los metodos
publix dbojsx () {

jButton1.addActionListener(new oyente());
jTextField1.setText("");
jTextField2.setText("");

}

//El main de abajo aparece automaticamente

public static void main(String args[]){
java.awt.EventQueue.invokelater(new Runnable){
public void run(){
new dbojsx().setVisible(true);
}
});
}

//Se crea el oyente para el boton

private class oyente implements ActionListener{

public void actionPerformed(ActionEvent event)
{

try{
String r="";

if (r.equals(jTextField1.getText())&&r.equals(jTextField2.getText())){

JOptionPane.showMessageDialog(null,"no se puede introducir los datos ver si no hay espacio en blanco");
}
else{
//Aqui es donde se registra en controlador

DriverManager.registerDriver(new org.gjt.mm.mysql.Driver());
// donde equipo: es el equipo en el que esta la base de datos
//base: es la base de datos que creamos
//y el usuario y contraseña

cnx=DriverManager.getConnection("jdbc:mysql://equipo:3306/base","usuario","contraseña");
stmt=cnx.createStatement();

//usuario es el nombre de nuestra base de datos
//nombre y ciudad son los campos

stmt.executeUpdate("INSERT INTO usuario(nombre, ciudad)VALUES('"+ jTextField1.getText()+"','" + jTextField2.getText()+ "');");

JOptionPane.showMessageDialog(null,"guardado el dato");

jTextField1.setText("");
jTextField2.setText("");

cnx.clse();
}
}catch (SQLException sqle)
{
System.out.println(sqle.getMessage());
System.exit(0);
}
}
}
//Aqui se crean las variables del diseño de forma automatica

//Variables declaration - do not modify

private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
//End of viariables declaration


Y es todo, lo ejecutamos y al llenar los datos deben de guardarse ya en la base que creamos, es importante mencionar que fue diseñado desde el netbeans y creando los botones desde la opción de diseño, del manual en el que me base todas las variables se declaran desde el inicio y es algo asi


package clientes;
import java.awt.*; //CODIGO PARA DAR DE ALTA A PROVEEDORES CON BASE DE DATOS
import java.sql.*;
import java.awt.event.*;
import javax.swing.*;

public class clientes extends JFrame {
private JLabel label1, label2, label3, label4, label5,label6,label7;
private JTextField textField1, textField2, textField3,textField4,textField5,textField6;
private JPasswordField passwordField;
private JButton boton1;
Connection cnx;
Statement stmt;
ResultSet rset;

public clientes()
{
super( "ALTA_clientes" );

Container container = getContentPane();
container.setLayout( new FlowLayout() );
container.setBackground( Color.BLACK);

label1 = new JLabel( "Nombre" );
label1.setToolTipText( "inserte su nombre" );
label1.setBackground(Color.darkGray);
label1.setForeground(Color.RED);
container.add( label1 );
textField1 = new JTextField( 30 );
textField1.setBackground(Color.lightGray);
container.add( textField1 );

label2 = new JLabel("Direccion");
label2.setForeground(Color.RED);
label2.setToolTipText( "cuale es su direccion" );
container.add(label2);

textField2=new JTextField(30);
textField2.setBackground(Color.lightGray);
container.add( textField2 );

label3=new JLabel("Telefono");
label3.setForeground(Color.RED);
label3.setToolTipText("inserte su telefono");
container.add(label3);
textField3=new JTextField(30);
textField3.setBackground(Color.lightGray);
container.add(textField3);

label4 = new JLabel("e-mail");
label4.setForeground(Color.RED);
label4.setToolTipText( "@" );
container.add(label4);
textField4=new JTextField(30);
textField4.setBackground(Color.lightGray);
container.add( textField4 );


boton1 = new JButton( "Guardar" );
boton1.setForeground( Color.RED);
boton1.setBackground(Color.black);

container.add( boton1 );


escuchador escucha=new escuchador();

boton1.addActionListener(escucha);
setSize(410, 217 );
setVisible( true );

} // end constructor

private class escuchador implements ActionListener {


public void actionPerformed( ActionEvent event )
{

try {
String r=" ";


if(r.equals(textField1.getText())&&
r.equals(textField2.getText())&&
r.equals(textField3.getText())&&
r.equals(textField4.getText())){

JOptionPane.showMessageDialog(null,"no se puede introducir los datos ver si no ay espacio en blanco");
}
else{




DriverManager.registerDriver(new org.gjt.mm.mysql.Driver());
cnx = DriverManager.getConnection("jdbc:mysql://127.0.0.1/almacen","root","");
stmt = cnx.createStatement();






stmt.executeUpdate("INSERT INTO proveedores(nombre, direccion, telefono, email) VALUES ('" + textField1.getText()+ "','" + textField2.getText() + "','" + textField3.getText()+"','" + textField4.getText()+ "');");

JOptionPane.showMessageDialog(null,"guardado el dato");


textField1.setText(" ");
textField2.setText(" ");
textField3.setText(" ");
textField4.setText(" ");
cnx.close();
}
} catch (SQLException sqle)
{
System.out.println(sqle.getMessage());
System.exit(0);
}
}
}
}

Las paginas de donde me base son de:

http://www.mygnet.net/ -- Muy buena y recomendada

5 comentarios:

Haskano dijo...

Muy buen tutorial, estoy creando una aplicacion parecida, me podrias ayudar en la instruccion "Update", para poder actualizar los datos, ya implentemente la funcion de "Insert", "DELETE", y solo me falta esa ojala pudieras echarme la la mano. Muchas Gracias, mi correo es r_vega_@hotmail.com

De nuevo muchas gracias

ramos dijo...

gracias, y una disculpa por la tardanza pero el trabajo ha sido un poco demandante en los ultimos dias, no he tenido oportunidad de seguir trabajando en las bases de datos, pero espero que estos ejemplos que he descargado y te mando a tu correo te sean de utilidad, hay luego cuentas como quedo

Haskano dijo...

Gracias Ramos pero no me llego nada ami correo , aun ando buscando la forma del UPDATE, gracias de todas formas te lo adradeceria si me echaras la mano con eso...

luisss dijo...

pues no me funciono
x k no se k va en cada lugar
tu codigo esta bien supongo
pero son 2 partes
y es lo k no se k onda

Erikson dijo...

ok entiendo que muy bien el tuto pero necesito cargar un dato que esta ya en la base de datos a un jlabel para que me lo muestre si esta en la base de datos pero no lo he logrado hacer si puedes ayudarme por favor, si es posible una ayuda escribeme a el email erikson879@hotmail.com