Conexión Java - Mysql - Ponencia Flisol

 

 

Manual mysql: http://dev.mysql.com/doc/refman/5.0/es/index.html

Manual Paso a Paso de Java:  http://www.webtaller.com/manual-java/indice_manual_java.php

Manual PHP: http://www.webestilo.com/php/

 

 

¿Qué Necesitamos?.

 

 

Necesitamos el paquete Java  J/Connector  que nos permitirá trabajar con MySql. Este es el archivo comprimido.                                                                                          

mysql-connector-java-3.0.14-production.tar.gz                 

 

              Descargable del sitio www.mysql.com             

JDBC

JDBC es un API de Java para acceder a sistemas de bases de datos, y prácticamente a cualquier tipo de dato tabular. El API JDBC consiste de un conjunto de clases e interfaces que permiten a cualquier programa Java acceder a sistemas de bases de datos de forma homogénea. Al igual que ODBC, la aplicación de Java debe tener acceso a un controlador (driver) JDBC adecuado. Este controlador es el que implementa la funcionalidad de todas las clases de acceso a datos y proporciona la comunicación entre el API JDBC y la base de datos real. De manera muy simple, al usar JDBC se pueden hacer tres cosas:

  • Establecer una conexión a una fuente de datos (ej. una base de datos).
  • Mandar consultas y sentencias a la fuente de datos.
  • Procesar los resultados.

 

 

 

 

CARGAR EL CONTROLADOR  JDBC

Para trabajar con el API JDBC se tiene que importar el paquete java.sql, tal y como se indica a continuación:

import java.sql.*;

En este paquete se definen los objetos que proporcionan toda la funcionalidad que se requiere para el acceso a bases de datos.

El siguiente paso después de importar el paquete java.sql consiste en cargar el controlador JDBC, es decir un objeto Driver especgfico para una base de datos que define cómo se ejecutan las instrucciones para esa base de datos en particular.

Hay varias formas de hacerlo, pero la más sencilla es utilizar el método forName() de la clase Class:

Class.forName("Controlador JDBC");

 

para el caso particular del controlador para MySQL, Connector/J, se tiene lo siguiente:

Class.forName("com.mysql.jdbc.Driver");

 

Debe tenerse en cuenta que el método estático forName() definido por la clase Class genera un objeto de la clase especificada. Cualquier controlador JDBC tiene que incluir una parte de iniciación estática que se ejecuta cuando se carga la clase. En cuanto el cargador de clases carga dicha clase, se ejecuta la iniciación estática, que pasa a registrarse como un controlador JDBC en el DriverManager.

 

Para la base de datos csl creada anteriormente, el URL sería :

 
String url = "jdbc:mysql://localhost/agendita";
 

Una vez que se ha determinado el URL, se puede establecer una conexión a una base de datos.

El objeto Connection es el principal objeto utilizado para proporcionar un vínculo entre las bases de datos y una aplicación en Java. Connection proporciona métodos para manejar el procesamiento de transacciones, para crear objetos y ejecutar instrucciones SQL, y para crear objetos para la ejecución de procedimientos almacenados.


Se puede emplear tanto el objeto Driver como el objeto DriverManager para crear un objeto Connection. Se utiliza el método connect() para el objeto Driver, y el método getConnection() para el objeto DriverManager.



El objeto Connection proporciona una conexión estática a la base de datos. Esto significa que hasta que se llame en forma explícita a su método close() para cerrar la conexión o se destruya el objeto Connection, la conexión a la base de datos permanecerá activa.

La manera más usual de establecer una conexión a una base de datos es invocando el método getConnection() de la clase DriverManager. A menudo, las bases de datos están protegidas con nombres de usuario (login) y contraseñas (password) para restringir el acceso a las mismas. El método getConnection() permite que el nombre de usuario y la contraseña se pasen también como parámetros.

 
String usuario = "root";
String contraseña = "123456789";
Connection conn = DriverManager.getConnection(url,usuario,contraseña);
 
 

En toda aplicación de bases de datos con MySQL es indispensable poder establecer la conexión al servidor para posteriormente enviarle las consultas. Los programas en Java no son la excepción. El siguiente código va a servir para verificar que podemos establecer una conexión a la base de datos agendita.


import java.sql.*;

public class ConexionBD
{
   static String bd = "sesion";
   static String login = "root";
   static String password = "123456789";
   static String url = "jdbc:mysql://localhost/"+bd;


   public static void main(String[] args) throws Exception
   {
      Connection conn = null;

      try
      {
         Class.forName("com.mysql.jdbc.Driver").newInstance();

         conn = DriverManager.getConnection(url,login,password);

         if (conn != null)
         {
            System.out.println("Conexión a base de datos "+url+" ... Ok");
            conn.close();
         }
      }
      catch(SQLException ex)
      {
         System.out.println(ex);
      }
      catch(ClassNotFoundException ex)
      {
         System.out.println(ex);
      }

   }
}

 

 

CREACIÓN DE SENTENCIAS

El objeto Connection permite establecer una conexión a una base de datos. Para ejecutar instrucciones SQL y procesar los resultados de las mismas, se debe hacer uso de un objeto Statement.

Los objetos Statement envgan comandos SQL a la base de datos, y pueden ser de cualquiera de los tipos siguientes:

  • Un comando de definición de datos como CREATE TABLE o CREATE INDEX.
  • Un comando de manipulación de datos como INSERT, DELETE o UPDATE.
  • Un sentencia SELECT para consulta de datos.

Un comando de manipulación de datos devuelve un contador con el número de filas (registros) afectados, o modificados, mientras una instrucción SELECT devuelve un conjunto de registros denominado conjunto de resultados (result set). La interfaz Statement no tiene un constructor , sin embargo, podemos obtener un objeto Statement al invocar el método createStatement() de un objeto Connection.

conn = DriverManager.getConnection(url,login,pasword);

Statement stmt = conn.createStatement();

Una vez creado el objeto Statement, se puede emplear para enviar consultas a la base de datos usando los métodos execute(), executeUpdate() o executeQuery(). La elección del método depende del tipo de consulta que se va a enviar al servidor de bases de datos:

 

Método

Descripción

execute( )

Se usa principalmente cuando una sentencia SQL regresa varios conjuntos de resultados. Esto ocurre principalmente cuando se está haciendo uso de procedimientos almacenados.

executeUpdate( )

Este método se utiliza con instrucciones SQL de manipulación de datos tales como INSERT, DELETE o UPDATE.

executeQuery( )

Se usa en las instrucciones del tipo SELECT.

Es recomendable que se cierren los objetos Connection y Statement que se hayan creado cuando ya no se necesiten. Lo que sucede es que cuando en una aplicación en Java se están usando recursos externos, como es el caso del acceso a bases de datos con el API JDBC, el recolector de basura de Java (garbage collector) no tiene manera de conocer cuál es el estado de esos recursos, y por lo tanto, no es capaz de liberarlos en el caso de que ya no sean útiles. Lo que ocurre en estos casos es que se pueden quedar almacenados en memoria grandes cantidades de recursos relacionados con la aplicación de bases de datos que se está ejecutando. Es por esto que se recomienda que se cierren de manera explícita los objetos Connection y Statement.

De manera similar a Connection, la interfaz Statement tiene un método close() que permite cerrar de manera explícita un objeto Statement. Al cerrar un objeto Statement se liberan los recursos que están en uso tanto en la aplicación Java como en el servidor de bases de datos.

Statement stmt = conn.createStatement();

  

   ....

 

   stmt.close();

 

Ejecución de consultas

Cuando se ejecutan sentencias SELECT usando el método executeQuery(), se obtiene como respuesta un conjunto de resultados, que en Java es representado por un objeto ResultSet.

 
Statement stmt = conn.createStatement();
 
ResultSet res  = stmt.executeQuery("SELECT * FROM estudiante");
 

Se puede pensar en un conjunto de resultados como una tabla ( filas y columnas ) en la que están los datos obtenidos por una sentencia SELECT.

La información del conjunto de resultados se puede obtener usando el método next() y los diversos métodos getXXX() del objeto ResultSet. El método next() permite moverse fila por fila a través del ResultSet, mientras que los diversos métodos getXXX() permiten accesar a los datos de una fila en particular.

Los métodos getXXX() toman como argumento el gndice o nombre de una columna, y regresan un valor con el tipo de datos especificado en el método. Así por ejemplo, getString() regresará una cadena, getBoolean() regresará un booleano y getInt() regresará un entero. Cabe mencionar que estos métodos deben tener una correspondencia con los tipos de datos que se tienen en el ResultSet, y que son a las vez los tipos de datos provenientes de la consulta SELECT en la base de datos, sin embargo, si únicamente se desean mostrar los datos se puede usar getString() sin importar el tipo de dato de la columna.

Por otra parte, si en estos métodos se utiliza la versión que toma el índice de la columna, se debe considerar que los índices empiezan a partir de 1, y no en 0 (cero) como en los arreglos, los vectores, y algunas otras estructuras de datos de Java.

Existe un objeto ResultSetMetaData que proporciona varios métodos para obtener información sobre los datos que están dentro de un objeto ResultSet. Estos métodos permiten entre otras cosas obtener de manera dinámica el número de columnas en el conjunto de resultados, así como el nombre y el tipo de cada columna.

 
ResultSet res  = stmt.executeQuery("SELECT * FROM estudiante");
ResultSetMetaData metadata = res.getMetaData();
 

 

Presentación

Calendario

April 2014
M T W T F S S
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
<< < > >>
Crear un blog en OverBlog - Contacto - C.G.U - Remuneración por el programa "Gana con tu Blog" - Reportar un abuso