Ahora vamos a realizar un CRUD de clientes , para manejar los clientes en nuestra base de datos MySQL, los campos que usaremos para los clientes son: Nombre: Apellidos, Direccion, Telefono, Email.
El siguiente CRUD que haremos es para manejar Clientes, Contactos, Proveedores entre otros tipos de personas, pero inicialmente vamos a usar este modulo para crear Clientes.
Para la continuidad de este articulo es necesario saber como Conectar Netbeans, Java y MYSQL aunque ya les damos el codigo de conexion es necesario agregar la dependencia.
Base de datos
La base de datos es Mysql , la estructura de la tabla es la misma que tenemos en el sistema Inventio Lite.
create table person( id int not null auto_increment primary key, image varchar(255), name varchar(255), lastname varchar(50), company varchar(50), address1 varchar(50), address2 varchar(50), phone1 varchar(50), phone2 varchar(50), email1 varchar(50), email2 varchar(50), kind int, created_at datetime );
En esta tabla ademas de todos los tipos de texto varchar(255) tenemos un campo kind que este lo vamos a variar por ejemplo 1 para clientes, 2 para proveedores y asi podemos ir poniendo otro valor para otros tipos de Contactos o personas.
Codigo
Siguiendo la estructura de los CRUDs anteriores, empezamos por el archivo de conexion a la base de datos el archivo Database.java.
public class Database { public static Database instance; public Connection connection; public static Database getInstance(){ if(instance==null){ instance = new Database(); } return instance; } public static Connection getConnection() throws SQLException{ String url = "jdbc:mysql://localhost:3306/inventiolite"; String user = "root"; String pass = ""; return DriverManager.getConnection(url, user,pass); } }
El siguiente archivo es Client.java que contiene la estructura de un cliente en la base de datos.
public class Database { public static Database instance; public Connection connection; public static Database getInstance(){ if(instance==null){ instance = new Database(); } return instance; } public static Connection getConnection() throws SQLException{ String url = "jdbc:mysql://localhost:3306/inventiolite"; String user = "root"; String pass = ""; return DriverManager.getConnection(url, user,pass); } }
El siguiente archivo es ClientController.java que contiene las funciones y consultas SQL para realizar tareas en la base de datos relacionadas con la tabla de clientes.
public class ClientController { public List<Client> getClients() throws SQLException{ Database db = Database.getInstance(); ResultSet rs = null; PreparedStatement st = db.getConnection().prepareStatement("select * from person where kind=1"); rs = st.executeQuery(); List<Client> cat = new ArrayList<Client>() ; while(rs.next()){ Client cate = new Client(); cate.id= rs.getInt("id"); cate.name = rs.getString("name"); cate.lastname = rs.getString("lastname"); cate.address1 = rs.getString("address1"); cate.phone1 = rs.getString("phone1"); cate.email1 = rs.getString("email1"); cate.kind = rs.getInt("kind"); cat.add(cate); } return cat; } public Client getClientById(int id) throws SQLException{ Database db = Database.getInstance(); ResultSet rs = null; PreparedStatement st = db.getConnection().prepareStatement("select * from person where id = "+id); rs = st.executeQuery(); //List<Product> cat = new ArrayList<Product>() ; Client cate = null; while(rs.next()){ cate = new Client(); cate.id= rs.getInt("id"); cate.name = rs.getString("name"); cate.lastname = rs.getString("lastname"); cate.address1 = rs.getString("address1"); cate.phone1 = rs.getString("phone1"); cate.email1 = rs.getString("email1"); cate.kind = rs.getInt("kind"); } return cate; } public void addClient(String name, String lastname, String address1, String phone1, String email1) throws SQLException{ Database db = Database.getInstance(); Statement s = db.getConnection().createStatement(); String query1 = "insert into person (name,lastname, address1, phone1, email1, kind, created_at) value (\""+name+"\",\""+lastname+"\",\""+address1+"\",\""+phone1+"\",\""+email1+"\",1,NOW())"; s.executeUpdate(query1); } public void updateClient(int id, String name, String lastname, String address1, String phone1, String email1) throws SQLException{ Database db = Database.getInstance(); Statement s = db.getConnection().createStatement(); String query1 = "update person set name = \""+name+"\",lastname = \""+lastname+"\",address1 = \""+address1+"\",phone1 = \""+phone1+"\",email1 = \""+email1+"\" where id = "+id; s.executeUpdate(query1); } public static void deleteClient(int id) throws SQLException{ Database db = Database.getInstance(); Statement s = db.getConnection().createStatement(); String query1 = "delete from person where id = "+id; s.executeUpdate(query1); } }
Ahora el resto de archivos Corresponden a las Vistas o Formularios que estan hechos en Swing y las funciones de ClientController.java son usadas en las acciones de los botones de los formularios.
Los archivos se los dejo al final en la seccion de Descargar.
Formularios
Los formularios son 3 y son Ver Clientes, Nuevo Cliente y Modificar Cliente.
Ver Clientes
El formulario de Ver Clientes tiene los botones para abrir los otros formularios, Nuevo Cliente, Actualizar … Modificar Seleccionado, Eliminar seleccionado (Eliminar no cuenta con un formulario).
Nuevo Cliente
El formulario de Nuevo Cliente tiene los campos para los datos del cliente y el boton guardar que ejecuta la funcion addClient de ClientController.java tomando los valores de campos.
Modificar Cliente
El formulario de modificar cliente tiene los campos del cliente y rellena los valores de la base de datos, al dar click sobre el boton guardar se ejecuta la funcion updateClient de ClientController.java
Descargar
A continuacion les dejo los archivos del Proyecto.
Link: https://www.dropbox.com/scl/fi/nhc7tbikdq7q31jz1dn32/ClientsCrud.zip?rlkey=4zpeoposf7ljksjq9x3wemgkd
El archivo de descarga es el proyecto para abrirlo con el NetBeans.