Recent comments

JDBC Conexion Simple con MySQL


Ejemplo de Conexion con base de datos de mysql


Estructura del proyecto:
Creado con Maven project desde STS
1.- agregar la dependencia de Java y del driver en este caso Mysql 5
2.- La clase manejo persona implementa el uso de la BD
3.- Clase Conexion: carga el driver y cierra conexiones
4.- PersonasJDBC tiene la implementacion de los métodos apoyandose de la clase Conexion


Conexion:
package datos;

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


/**
* Clase Conexion JDBC
*/
public class Conexion {


//Valores de conexion a MySql


private static String JDBC_DRIVER = "com.mysql.jdbc.Driver";
//El puerto es opcional
private static String JDBC_URL = "jdbc:mysql://localhost/sga?useSSL=false";
private static String JDBC_USER = "root";
private static String JDBC_PASS = "admin";
private static Driver driver = null;


    //Para que no haya problemas al obtener la conexion de
//manera concurrente, se usa la palabra synchronized
public static synchronized Connection getConnection()
throws SQLException {
if (driver == null) {
try {
//Se registra el driver
Class jdbcDriverClass = Class.forName(JDBC_DRIVER);
driver = (Driver) jdbcDriverClass.newInstance();
DriverManager.registerDriver(driver);
} catch (Exception e) {
System.out.println("Fallo en cargar el driver JDBC");
e.printStackTrace();
}
}
return DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASS);
}


//Cierre del resultSet
public static void close(ResultSet rs) {
try {
if (rs != null) {
rs.close();
}
} catch (SQLException sqle) {
sqle.printStackTrace();
}
}


//Cierre del PrepareStatement
public static void close(PreparedStatement stmt) {
try {
if (stmt != null) {
stmt.close();
}
} catch (SQLException sqle) {
sqle.printStackTrace();
}
}


//Cierre de la conexion
public static void close(Connection conn) {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException sqle) {
sqle.printStackTrace();
}
}
}

PersonasJDBC:

package datos;


import domain.Persona;
import java.sql.*;
import java.util.*;


/**
* Clase que contiene los métodos de SELECT, INSERT, UPDATE y DELETE para la
* tabla de PERSONAS en MYSQL
*
* @author
*
*/
public class PersonasJDBC {
//Nos apoyamos de la llave primaria autoincrementable de MySql
//por lo que se omite el campo de persona_id
//Se utiliza un prepareStatement, por lo que podemos
//utilizar parametros (signos de ?)
//los cuales posteriormente será sustituidos por el parametro respectivo


private final String SQL_INSERT
= "INSERT INTO persona(nombre, apellido) VALUES(?,?)";


private final String SQL_UPDATE
= "UPDATE persona SET nombre=?, apellido=? WHERE id_persona=?";


private final String SQL_DELETE
= "DELETE FROM persona WHERE id_persona = ?";


private final String SQL_SELECT
= "SELECT id_persona, nombre, apellido FROM persona ORDER BY id_persona";


/**
* Metodo que inserta un registro en la tabla de Persona
*
* @param nombre
* @param apellido
*/
public int insert(String nombre, String apellido) {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;//no se utiliza en este ejercicio       
int rows = 0; //registros afectados
try {
conn = Conexion.getConnection();
stmt = conn.prepareStatement(SQL_INSERT);
int index = 1;//contador de columnas
stmt.setString(index++, nombre);//param 1 => ?
stmt.setString(index++, apellido);//param 2 => ?
System.out.println("Ejecutando query:" + SQL_INSERT);
rows = stmt.executeUpdate();//no. registros afectados
System.out.println("Registros afectados:" + rows);


} catch (SQLException e) {
e.printStackTrace();
} finally {
Conexion.close(stmt);
Conexion.close(conn);
}
return rows;
}


/**
* Metodo que actualiza un registro existente
*
* @param id_persona Es la llave primaria
* @param nombre Nuevo Valor
* @param apellido Nuevo Valor
* @return int No. de registros modificados
*/
public int update(int id_persona, String nombre, String apellido) {
Connection conn = null;
PreparedStatement stmt = null;
int rows = 0;
try {
conn = Conexion.getConnection();
System.out.println("Ejecutando query:" + SQL_UPDATE);
stmt = conn.prepareStatement(SQL_UPDATE);
int index = 1;
stmt.setString(index++, nombre);
stmt.setString(index++, apellido);
stmt.setInt(index, id_persona);
rows = stmt.executeUpdate();
System.out.println("Registros actualizados:" + rows);
} catch (SQLException e) {
e.printStackTrace();
} finally {
Conexion.close(stmt);
Conexion.close(conn);
}
return rows;
}


/**
* Metodo que elimina un registro existente
*
* @param id_persona Es la llave primaria
* @return int No. registros afectados
*/
public int delete(int id_persona) {
Connection conn = null;
PreparedStatement stmt = null;
int rows = 0;
try {
conn = Conexion.getConnection();
System.out.println("Ejecutando query:" + SQL_DELETE);
stmt = conn.prepareStatement(SQL_DELETE);
stmt.setInt(1, id_persona);
rows = stmt.executeUpdate();
System.out.println("Registros eliminados:" + rows);
} catch (SQLException e) {
e.printStackTrace();
} finally {
Conexion.close(stmt);
Conexion.close(conn);
}
return rows;
}


/**
* Metodo que regresa el contenido de la tabla de personas
*/
public List<Persona> select() {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
Persona persona = null;
List<Persona> personas = new ArrayList<Persona>();
try {
conn = Conexion.getConnection();
stmt = conn.prepareStatement(SQL_SELECT);
rs = stmt.executeQuery();
while (rs.next()) {
int id_persona = rs.getInt(1);
String nombre = rs.getString(2);
String apellido = rs.getString(3);
/*System.out.print(" " + id_persona);
System.out.print(" " + nombre);
System.out.print(" " + apellido);
System.out.println();
*/
persona = new Persona();
persona.setId_persona(id_persona);
persona.setNombre(nombre);
persona.setApellido(apellido);
personas.add(persona);
}


} catch (SQLException e) {
e.printStackTrace();
} finally {
Conexion.close(rs);
Conexion.close(stmt);
Conexion.close(conn);
}
return personas;
}
}



Finalmente muestro la estructura de la BD SGA.



Descargar Proyecto



No hay comentarios.