You are on page 1of 9

CRUD.

java

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package netosolis.com;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.LinkedList;
import javax.swing.JOptionPane;

/**
*
* @author netosolis.com
*/
public class CRUD {
private Conexion conexion = new Conexion();
private Connection con;
private Statement st;
private ResultSet rs;

public CRUD() {
try{
if((con = conexion.getConexionMYSQL())==null){
JOptionPane.showMessageDialog(null,"Error con la conexion a la BD");
return;
}
st = con.createStatement();
}catch(Exception e){
e.printStackTrace();
}
}

//Inserta una nueva pelicula en la Base de Datos


public boolean insert(String nombre,String genero,int anio,String actor,String pais){
try {
String query = "INSERT INTO peliculas
VALUES(NULL,'"+nombre+"','"+genero+"','"+anio+"','"+actor+"','"+pais+"');";
st.executeUpdate(query);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}

//Devuelve el resultset con los datos de peliculas


public ResultSet selectXtodas(){
try {
String query = "SELECT * FROM peliculas";
rs = st.executeQuery(query);
return rs;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

//Devuelve el resultset con los datos de peliculas con select por genero
public ResultSet selectXgenero(String genero){
try {
String query = "SELECT * FROM peliculas WHERE genero = '"+genero+"'";
rs = st.executeQuery(query);
return rs;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

//Devuelve el resultset con los datos de peliculas con select por pais
public ResultSet selectXpais(String pais){
try {
String query = "SELECT * FROM peliculas WHERE pais = '"+pais+"'";
rs = st.executeQuery(query);
return rs;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

//Elimina la pelicula
public boolean delete(int id){
try {
String query = "DELETE FROM peliculas WHERE id = '"+id+"'";
st.executeUpdate(query);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}

//Actualiza los datos de la pelicula


public boolean update(int id,String nombre,String genero,int anio,String actor,String pais){
try {
String query = "UPDATE peliculas SET"
+ " nombre = '"+nombre+"',"
+ " genero = '"+genero+"',"
+ " anio = '"+anio+"',"
+ " actor = '"+actor+"',"
+ " pais = '"+pais+"' WHERE id = '"+id+"';";
st.executeUpdate(query);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}

conexión.java

package netosolis.com;

import java.sql.Connection;
import java.sql.DriverManager;

/**
*
* @author netosolis.com
*/
public class Conexion {
//Configuracion de los datos de la BD
private String usuario = "root";
private String pass = "";
private String host = "localhost";
private String nombre_BD = "crudjava";
private Connection con = null;

public Conexion() {
}
//Metodo que se devuelve la conexion o null si hubo un error
public Connection getConexionMYSQL(){
try{
Class.forName("com.mysql.jdbc.Driver").newInstance( );
String servidor = "jdbc:mysql://"+host+"/"+nombre_BD;
con = DriverManager.getConnection(servidor,usuario,pass);
return con;
}catch(Exception e){
e.printStackTrace();
return con;
}
}
}

form.java

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package netosolis.com;

import java.sql.ResultSet;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableModel;

/**
*
@author netosolis.com
*/
public class Main extends javax.swing.JFrame {
private UIManager.LookAndFeelInfo apariencias[];
private CRUD crud;
private DefaultTableModel modelo = new DefaultTableModel();

/**
* Creates new form Main
*/
public Main() {
initComponents();
apariencias=UIManager.getInstalledLookAndFeels();
try {
UIManager.setLookAndFeel(apariencias[1].getClassName());
SwingUtilities.updateComponentTreeUI(this);
crud = new CRUD();
tabla.setModel(modelo);
modelo.addColumn("Id");
modelo.addColumn("Nombre");
modelo.addColumn("Genero");
modelo.addColumn("Año");
modelo.addColumn("Actor");
modelo.addColumn("Pais");
this.cargarPeliculas();
} catch (Exception e) {
e.printStackTrace();
}
}
//Convierte a mayusculas el contenido de los JTEXTFIELD
private void toUpper(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_toUpper
JTextField ob =(JTextField) evt.getSource();
ob.setText(ob.getText().toUpperCase());
}//GEN-LAST:event_toUpper

//Funcion para registrar una nueva pelicula


private void Registrar(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Registrar
//Sacamos los valores de los jtextfield y los jcombos
String nombre = txNombre.getText();
String actor = txActor.getText();
//Si algun jtextfield no esta lleno mandamos un error
if(nombre.trim().length()==0 || actor.trim().length()==0){
JOptionPane.showMessageDialog(this, "Falta LLenar Algunos Datos", "Error",
JOptionPane.ERROR_MESSAGE);
return;
}
int anio = Integer.parseInt(cbAnio.getSelectedItem().toString());
String genero = cbGenero.getSelectedItem().toString();
String pais = cbPais.getSelectedItem().toString();

if(crud.insert(nombre, genero, anio, actor, pais)){


JOptionPane.showMessageDialog(this, "Pelicula registrada con exito.", "Extio",
JOptionPane.INFORMATION_MESSAGE);
txActor.setText("");
txNombre.setText("");
cbPeliculas.removeAllItems();
cbPeliculas1.removeAllItems();
cargarPeliculas();
}else{
JOptionPane.showMessageDialog(this, "Error al registrar los datos.", "Error",
JOptionPane.ERROR_MESSAGE);
}
}//GEN-LAST:event_Registrar

//Funcion que sirve para buscar peliculas por genero


private void BuscarPorGenero(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BuscarPorGenero
if(cbGenero1.getSelectedIndex()==0){
cargarPeliculas();
return;
}
limpiarTabla();
try{
ResultSet rs = crud.selectXgenero(cbGenero1.getSelectedItem().toString());
while(rs.next()){
Object row [] = new Object[6];
for (int i = 0; i < 6; i++) {
row[i] = rs.getObject(i+1); //El resulset los indices empiezan en 1, mi for lo
empieso en 0 por eso le sumo i+1
}
//Agregamos cada registro al modelo de la tabla
modelo.addRow(row);
}
}catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(this, "Error al cargar los datos de la Base de Datos.",
"Error", JOptionPane.ERROR_MESSAGE);
}
}//GEN-LAST:event_BuscarPorGenero

//Funcion para buscar peliculas por pais


private void BuscarPorPais(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BuscarPorPais
if(cbPais1.getSelectedIndex()==0){
cargarPeliculas();
return;
}
limpiarTabla();
try{
ResultSet rs = crud.selectXpais(cbPais1.getSelectedItem().toString());
while(rs.next()){
Object row [] = new Object[6];
for (int i = 0; i < 6; i++) {
row[i] = rs.getObject(i+1); //El resulset los indices empiezan en 1, mi for lo
empieso en 0 por eso le sumo i+1
}
//Agregamos cada registro al modelo de la tabla
modelo.addRow(row);
}
}catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(this, "Error al cargar los datos de la Base de Datos.",
"Error", JOptionPane.ERROR_MESSAGE);
}
}//GEN-LAST:event_BuscarPorPais

//Funcion para actualizar los datos de una pelicula


private void ActualizarPelicula(java.awt.event.ActionEvent evt) {//GEN-
FIRST:event_ActualizarPelicula
//Sacamos los valores de los jtextfield y los jcombos
int id;
try {
id = Integer.parseInt(txId.getText());
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "Ninguna Pelicula Seleccionada.", "Extio",
JOptionPane.INFORMATION_MESSAGE);
return;
}
String nombre = txNombre1.getText();
String actor = txActor1.getText();
//Si algun jtextfield no esta lleno mandamos un error
if(nombre.trim().length()==0 || actor.trim().length()==0){
JOptionPane.showMessageDialog(this, "Falta LLenar Algunos Datos", "Error",
JOptionPane.ERROR_MESSAGE);
return;
}
int anio = Integer.parseInt(cbAnio1.getSelectedItem().toString());
String genero = cbGenero2.getSelectedItem().toString();
String pais = cbPais2.getSelectedItem().toString();

if(crud.update(id,nombre, genero, anio, actor, pais)){


JOptionPane.showMessageDialog(this, "Pelicula registrada con exito.", "Extio",
JOptionPane.INFORMATION_MESSAGE);
txActor.setText("");
txNombre.setText("");
cbPeliculas.removeAllItems();
cbPeliculas1.removeAllItems();
cargarPeliculas();
}else{
JOptionPane.showMessageDialog(this, "Error al registrar los datos.", "Error",
JOptionPane.ERROR_MESSAGE);
}
}//GEN-LAST:event_ActualizarPelicula

//Funcion para eliminar una pelicula


private void EliminarPelicula(java.awt.event.ActionEvent evt) {//GEN-
FIRST:event_EliminarPelicula
Pelicula pel = (Pelicula) cbPeliculas1.getSelectedItem();
if(pel == null)return;
if(crud.delete(pel.getId())){
JOptionPane.showMessageDialog(this, "La pelicula se elimino con exito", "Exito",
JOptionPane.INFORMATION_MESSAGE);
cbPeliculas.removeAllItems();
cbPeliculas1.removeAllItems();
cargarPeliculas();
}else{
JOptionPane.showMessageDialog(this, "No se pudo eliminar la pelicula", "Error",
JOptionPane.ERROR_MESSAGE);
}

}//GEN-LAST:event_EliminarPelicula

//Funcion que carga los datos de la pelicula a actualizar


private void CargarDatosPelicula(java.awt.event.ActionEvent evt) {//GEN-
FIRST:event_CargarDatosPelicula
Pelicula pel = (Pelicula) cbPeliculas.getSelectedItem();
if(pel == null)return;
txId.setText(pel.getId()+"");
txNombre1.setText(pel.getNombre());
for (int i = 0; i < cbGenero2.getItemCount(); i++) {
if(pel.getGenero().equals(cbGenero2.getItemAt(i).toString())){
cbGenero2.setSelectedIndex(i);
break;
}
}
cbAnio1.addItem(pel.getAnio());
cbAnio1.setSelectedIndex(cbAnio1.getItemCount()-1);
txActor1.setText(pel.actor);
for (int i = 0; i < cbPais2.getItemCount(); i++) {
if(pel.getPais().equals(cbPais2.getItemAt(i).toString())){
cbPais2.setSelectedIndex(i);
break;
}
}

}//GEN-LAST:event_CargarDatosPelicula

//Funcion que carga todas la peliculas en la tabla y en los JCOMboBox


private void cargarPeliculas(){
limpiarTabla();
try{
ResultSet rs = crud.selectXtodas();
while(rs.next()){
Object row [] = new Object[6];
for (int i = 0; i < 6; i++) {
row[i] = rs.getObject(i+1); //El resulset los indices empiezan en 1, mi for lo
empieso en 0 por eso le sumo i+1
}
//Agregamos cada registro al modelo de la tabla
modelo.addRow(row);
cbPeliculas.addItem(new
Pelicula(Integer.parseInt(row[0].toString()),row[1].toString(),row[2].toString(),
row[4].toString(),row[5].toString(),Integer.parseInt(row[3].toString())));
cbPeliculas1.addItem(new
Pelicula(Integer.parseInt(row[0].toString()),row[1].toString(),row[2].toString(),
row[4].toString(),row[5].toString(),Integer.parseInt(row[3].toString())));
}
}catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(this, "Error al cargar los datos de la Base de Datos.",
"Error", JOptionPane.ERROR_MESSAGE);
}
}

//Funcion para limpiar la tabla


private void limpiarTabla(){
for (int i = 0; i < modelo.getRowCount(); i++) {
modelo.removeRow(i);
i-=1;
}
}
//Clase con los atributos de la clase pelicula de la Base de datos
class Pelicula
{
private int id,anio;
private String nombre,genero,actor,pais;

public Pelicula(int id, String nombre,String genero,String actor, String pais,int anio)
{
this.id = id;
this.nombre = nombre;
this.anio = anio;
this.actor = actor;
this.pais = pais;
this.genero = genero;
}

public int getId()


{
return id;
}

public String getNombre()


{
return nombre;
}

public int getAnio() {


return anio;
}

public void setAnio(int anio) {


this.anio = anio;
}

public String getGenero() {


return genero;
}

public void setGenero(String genero) {


this.genero = genero;
}

public String getActor() {


return actor;
}

public void setActor(String actor) {


this.actor = actor;
}

public String getPais() {


return pais;
}

public void setPais(String pais) {


this.pais = pais;
}

@Override
public String toString()
{
return nombre;
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and
feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(Main.class.getName()).log(java.util.logging.Level.SEVERE, null,
ex);
} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(Main.class.getName()).log(java.util.logging.Level.SEVERE, null,
ex);
} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(Main.class.getName()).log(java.util.logging.Level.SEVERE, null,
ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(Main.class.getName()).log(java.util.logging.Level.SEVERE, null,
ex);
}
//</editor-fold>

/* Create and display the form */


java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Main().setVisible(true);
}
});
}

// Variables declaration - do not modify//GEN-BEGIN:variables


private javax.swing.JComboBox cbAnio;
private javax.swing.JComboBox cbAnio1;
private javax.swing.JComboBox cbGenero;
private javax.swing.JComboBox cbGenero1;
private javax.swing.JComboBox cbGenero2;
private javax.swing.JComboBox cbPais;
private javax.swing.JComboBox cbPais1;
private javax.swing.JComboBox cbPais2;
private javax.swing.JComboBox cbPeliculas;
private javax.swing.JComboBox cbPeliculas1;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JComboBox jComboBox3;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JTabbedPane jTabbedPane1;
private javax.swing.JTable tabla;
private javax.swing.JTextField txActor;
private javax.swing.JTextField txActor1;
private javax.swing.JTextField txId;
private javax.swing.JTextField txNombre;
private javax.swing.JTextField txNombre1;
// End of variables declaration//GEN-END:variables
}

TABLA_BASE_DE_DATOS.sql

CREATE TABLE IF NOT EXISTS `peliculas` (

`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,


`nombre` varchar(200) NOT NULL,
`genero` varchar(200) NOT NULL,
`anio` smallint(6) NOT NULL,
`actor` varchar(200) NOT NULL,
`pais` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

You might also like