Download Ejemplo de Base de Datos con Wamp

Document related concepts
no text concepts found
Transcript
Ejemplo de Base de Datos con Wamp
En este ejemplo vamos a realizar una aplicación con Bases de Datos en MySQL con
Bitnami/Wamp y NeatBeans. Seguir los pasos indicados para realizar el proyecto:
1. Descargaremos e instalaremos Bitnami/Wamp desde https://bitnami.com/stack/wamp o lo
podéis buscar en Google.
Accederemos al Manager Tool desde el menú de inicio
carpeta de Bintami. Si en nuestro ordenador tenemos varias versiones de Bitnami, debemos
desactivar todos antes de activar el nuestro.
Una vez funcionando nuestro Bitnami, accederemos a
phpMyAdmin desde el Manager Tool
1
2. Una vez dentro de WampServer, seleccionar la pestaña superior de Bases de
datos y crear una base de datos que llamaremos “bd_agenda”
2
3. Dentro de esta base de datos crearemos una tabla llamada “personal” de cuatro
columnas.
3
4. Creamos los campos que se detallan acontinuación:
a. Personalid Æ Tipo INT (Entero) con índice PRIMARY (clave principal)
y AUTO_INCREMENT
b. Nombre Æ Tipo VARCHAR de 40 caracteres
c. Apellidos Æ Tipo VARCHAR de 40 caracteres
d. Teléfono Æ Tipo VARCHAR de 15 caracteres
4
5. Tras crear la tabla, pulsamos en la estructura de la misma para ver cómo queda y
comprobar que está igual que la imagen de muestra.
5
6. Vamos a introducir algunos valores de ejemplo para ver que se guardan
correctamente desde la opción insertar, el campo “personalid” no lo rellenamos
ya que le hemos indicado que sea auto numérico. Introducir los valores que
aparecen en la imagen de muestra:
6
7. Ahora vamos a introducir otro valor pero mediante sentencia SQL, pulsar en la
opción SQL del menú e introducir el código que aparece en la imagen.
Comprobamos que se ejecuta el código SQL y se inserta el nuevo registro en la
Base de datos.
7
8. Ahora llega el momento de empezar con NeatBeans, creamos un nuevo proyecto
llamado “ProAgenda1” con Java Æ Java Aplication
8
9. Creamos un nuevo JFrame Form dentro de este proyecto llamado
“FormPersonal” para diseñar y crear el entorno y código necesario para nuestra
aplicación
9
10. Diseñar el siguiente entorno mediante las herramientas necesarias que
encontramos en el panel derecho “Palette”, se han utilizado JLabel para las
etiquetas, JTextFields para las cajas de texto, JButton para los botones y dos
Panel para encerrar a los campos y a los botones (El panel son los rectángulos
que encierran a los campos y a los botones, es opcional).
Indicar los nombres que creáis convenientes para cada uno de los objetos que se
crean en este formulario, a los JLabels no es necesario cambiarles el nombre,
pero a los JTextFields y JButton es interesante para posteriormente poder
identificarlos con facilidad.
Ejemplo:
Caja de texto para nombre Æ txtnombre
Botón para Insertar Æ btninsertar
10
11. Cramos dentro de nuestro proyecto, un Java Class… para realizar el código ce
conexión a nuestra base de datos y lo llamamos “conectar.java”
Código:
public class conectar {
Connection conect = null;
public Connection conexion(){
try{
//Cargamos el driver SQL
Class.forName("org.gjt.mm.mysql.Driver");
conect = DriverManager.getConnection("jdbc:mysql://localhost/bd_agenda", "root", "tame");
JOptionPane.showMessageDialog(null,"Conectado...");
}catch(Exception e){
JOptionPane.showMessageDialog(null,"Error: "+e);
}
return conect;
}
}
Root: nombre de usuario de la base de datos
Tame: password de la base de datos (estos valores pueden variar dependiendo de la configuración de WampServer)
11
12. Aquí se muestra el código utilizado para la realización del proyecto separado en
eventos y funciones, todo este código pertenece a “FormPersonal” y se puede
ejecutar para probarlo desde este formulario con Mayus + F6:
package proagenda1;
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
public class FormPersonal extends javax.swing.JFrame {
int opcion=0; //1- Insertar 2-Modificar
int pos=1;
String sql="";
DefaultTableModel model;
void cargar(){
String[] titulos={"Codigo","nombre","apellidos","telefono"};
String[] registros= new String[4];
sql = "SELECT * FROM personal";
model = new DefaultTableModel(null,titulos);
conectar cc= new conectar();
Connection cn = cc.conexion();
try {
Statement st = cn.createStatement();
ResultSet rs= st.executeQuery(sql);
while(rs.next()){
registros[0]=rs.getString("personalid");
registros[1]=rs.getString("nombre");
registros[2]=rs.getString("apellidos");
registros[3]=rs.getString("telefono");
model.addRow(registros);
}
tabladatos.setModel(model);
} catch (SQLException ex) {
Logger.getLogger(FormPersonal.class.getName()).log(Level.SEVERE, null, ex);
}
}
public FormPersonal() {
initComponents();
//SE CARGAN LOS DATOS Y SE VA AL PRIMER REGISTRO
primero();
cargar();
}
//LIMPIAR LOS CAMPOS PARA INTRODUCIR VALORES
void limpiar(){
txtpersonalid.setText("");
txtnombre.setText("");
txtapellidos.setText("");
txttelefono.setText("");
}
12
//HABILITAR CAMPOS Y BOTONES PARA INSERTAR O MODIFICAR
void habilitar(){
txtnombre.setEditable(true);
txtapellidos.setEditable(true);
txttelefono.setEditable(true);
btnaceptar.setEnabled(true);
btncancelar.setEnabled(true);
btninsertar.setEnabled(false);
btnmodificar.setEnabled(false);
btneliminar.setEnabled(false);
}
//DESHABILITAR CAMPOS Y BOTONES PARA INSERTAR O MODIFICAR
void deshabilitar(){
txtnombre.setEditable(false);
txtapellidos.setEditable(false);
txttelefono.setEditable(false);
btnaceptar.setEnabled(false);
btncancelar.setEnabled(false);
btninsertar.setEnabled(true);
btnmodificar.setEnabled(true);
btneliminar.setEnabled(true);
}
void primero(){
// codigo boton PRIMER REGISTRO
conectar cc = new conectar();
Connection cn = cc.conexion();
try {
//pos=1;
sql="SELECT * FROM personal";// WHERE personalid = "+pos;
Statement st = cn.createStatement();
ResultSet rs = st.executeQuery(sql);
rs.first();
txtpersonalid.setText(rs.getString("personalid"));
txtnombre.setText(rs.getString("nombre"));
txtapellidos.setText(rs.getString("apellidos"));
txttelefono.setText(rs.getString("telefono"));
} catch (SQLException ex) {
Logger.getLogger(FormPersonal.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void btninsertarActionPerformed(java.awt.event.ActionEvent evt) {
//codigo boton insertar
limpiar();
habilitar();
opcion=1;
}
private void btnmodificarActionPerformed(java.awt.event.ActionEvent evt) {
//codigo boton modificar
habilitar();
opcion=2;
}
private void btnaceptarActionPerformed(java.awt.event.ActionEvent evt) {
//codigo boton aceptar
13
conectar cc = new conectar();
Connection cn = cc.conexion();
//si seleccionamos INSERTAR
if(opcion==1){
try {
sql="INSERT INTO personal (nombre, apellidos, telefono) VALUES (?,?,?)";
PreparedStatement pst = cn.prepareStatement(sql);
pst.setString(1,txtnombre.getText());
pst.setString(2,txtapellidos.getText());
pst.setString(3,txttelefono.getText());
int n = pst.executeUpdate();
if(n>0){
JOptionPane.showMessageDialog(null, "Registro insertado");
deshabilitar();
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "ERROR: "+ex);
Logger.getLogger(FormPersonal.class.getName()).log(Level.SEVERE, null, ex);
}
}
//si seleccionamos MODIFICAR
if (opcion==2){
try {
sql="UPDATE personal SET nombre = ?, apellidos = ?, telefono = ? WHERE personalid = ?";
PreparedStatement pst = cn.prepareStatement(sql);
pst.setString(1, txtnombre.getText());
pst.setString(2, txtapellidos.getText());
pst.setString(3, txttelefono.getText());
pst.setString(4, txtpersonalid.getText());
int m = pst.executeUpdate();
if(m>0){
JOptionPane.showMessageDialog(null,"Registro modificado");
deshabilitar();
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null,"ERROR: "+ ex);
Logger.getLogger(FormPersonal.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Nota: este código puede variar según los nombres utilizados en el diseño y creación del proyecto.
14