miércoles, 25 de julio de 2007

Conexion MySQL con Java

En este tema asumo que ya se sabe de antemano cómo crear una base de datos en MySQL, para que el tema se enfoque realmente en la conexión con Java.
Trataré de actualizar cada artículo para que sea más entendible en cuanto mi tiempo me dé, bueno el primer paso para realizar la conexión entre MySQL y Java es bajarse el paquete mysql-connector-java-3.1.14-bin.jar, lo pueden encontrar buscando en google, sino en cuanto logre subirlo al servidor colocaré el enlace.

Seguidamente se tiene que colocar en una carpeta, preferible en donde no haya mucho movimiento, me refiero a una carpeta que no acostumbres a usar. En todo caso te creas una en el disco C:\mysql-connector-java-3.1.14 y se acabo el asunto.

Base de datos usada
Crearemos una BD simple en MySQL, tratando emular a un pequeño directorio telefónico. Para ello seguiremos los siguientes pasos:
  1. Crear la base de datos: Agenda
  2. Crear tabla: Telefonos
    • Campo 1: nombre[50] (clave primaria)
    • Campo 2: telefono[10]
JCreator
Con este IDE tuve el inconveniente de que modificando las variables globales no me resultaron, así que la única forma que encontré fue creando un proyecto y en librerías añadir el path donde alojé el mysql-connector-java-3.1.14-bin.jar (esto se realiza en propiedades del proyecto en el menú proyecto) .

Usaremos DriverManager.getConnection (url, userName, password); que sirve para establecer la conexión entre MySQL y Java.

Crearemos una clase: GestorMySQL

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class GestorMySQL{

private Connection conexion;
private Statement sentencia;

public GestorMySQL()throws Exception {
conexion=null;
sentencia=null;
conectar();
}

public void conectar() throws Exception {
Class.forName("com.mysql.jdbc.Driver").newInstance();
this.conexion = DriverManager.getConnection("jdbc:mysql:///Agenda","root","");
this.sentencia = conexion.createStatement();
}

public void desconectar() throws Exception {

if (this.sentencia != null) {
try {
this.sentencia.close();
} catch (SQLException SQLE) {
System.err.println ("La sentencia no ha sido instanciada... "+SQLE);
}
}
if (this.conexion != null) {
try {
this.conexion.close();
} catch (SQLException SQLE) {
System.err.println ("La conexion no ha sido instanciada... "+SQLE);
}
}
}

public void insertarContacto(String nombre,String telefono) throws SQLException {
String sql=null;
try{

sql = "INSERT INTO Telefonos VALUES ('"+nombre+"','"+telefono+"');";
System.out.println(sql);
sentencia.execute(sql);
System.out.println("Telefono guardado en Agenda");
}
catch(Exception e ) {
System.err.println ("No se puede insertar ningún dato... "+e);
}
}

public void reportarContactos() throws SQLException {
String sql=null;
ResultSet rs=null;
try{

sql = "SELECT * FROM Telefonos";
sentencia.executeQuery(sql);
rs = sentencia.getResultSet ( );

while (rs.next ( )) {
System.out.println("Nombre:"+rs.getString(1));
System.out.print("\t\tTelefono: "+rs.getString(2));
}
rs.close ( );
sentencia.close ( );
}
catch(Exception e ) {
System.err.println ("No se puede consultar ningún dato... "+e);
}

}

}

Clase Aplicación
La clase final donde irá el método estático Main() y en donde ingresaremos 3 datos:

public class Aplicacion{

public static void main(String[] args)throws Exception {
GestorMySQL gm=new GestorMySQL();
gm.insertarContacto("Jose","221100" );
gm.insertarContacto("Carlos","331100" );
gm.insertarContacto("Carmen","441100" );
gm.reportarContactos();
}
}

Ya que está diseñado en consola, podrán ver los resultados. Por ahora eso es todo, espero que sirva aunque sea de algo.










No hay comentarios: