Sunteți pe pagina 1din 15

Aprenda en N Diapositivas (Parte 1)

Por: Domnguez Geniz Amalio Javier < ajdgeniz@hotmail.com geniz.tecnologico@gmail.com ajdgeniz@yahoo.com.mx > http://ajdgeniz.wordpress.com
Tecnolgico de Estudios Superiores de Chalco
Geniz v. 1.0
Copyright 2010. Domnguez Geniz Amalio Javier

Java and all java-based trademarks are trademarks of Oracle Corporation in the U.S.A., other countries or both. 16/05/2010

1. Que es JDBC?
JDBC es Acrnimo de Java DataBase Conectivity, es una API estndar de Java que nos permite el Acceso a bases de datos relacionales como MySQL, Postgres, SQL Server, Oracle; Acceso a bases de datos relacionales embebidas o empotradas como: Firebird, SQLite, HSQLDB, etc. En Java SE 6 tenemos JDBC 4. Cada servidor de base de datos tiene un driver JDBC que cuenta con las interfaces especificadas en JDBC; es decir, cada manejador de base de datos tiene un driver especifico que generalmente viene en un archivo JAR y este es en la mayora de los casos suministrado por terceros.

16/05/2010

Geniz v. 1.0

2. JDBC API
Como se menciono anteriormente JDBC es una API (Aplication Programming Interface) que encontramos en el paquete de java: java.sql, el cual contiene algunos objetos y mtodos como: DriverManager, Connection, ResultSet, DatabaseMetaData, ResultSetMetaData, PreparedStatement, CallableStatement, etc. Otras funciones de JDBC Avanzado las podemos encontrar en javax.sql, por ejemplo: DataSource para realizar un pool de conexiones.

16/05/2010

Geniz v. 1.0

3. URL de la base de datos


La URL o Direccin de la base de datos es una cadena de texto que nos ayuda a conectarnos directamente a la base de datos, las URLs deben de tener los siguientes datos: un nombre de servidor, un puerto, un protocolo, en algunas ocasiones la ubicacin fsica de la base de datos, por ejemplo: URL MySQL: jdbc:mysql://servidor:puerto/Nombrebasedatos Jdbc:mysql://localhost:3306/information_schema
URL Oracle: jdbc:oracle:thin:@NombreMaquina:Puerto:NombreBasedeDatos jdbc:oracle:thin:@localhost:1521:system URL HSQLDB(Modo Standalone): jdbc:hsqldb:file:UbicaciondelArchivo jdbc:hsqldb:file:C:/MiBase/Sample

16/05/2010

Geniz v. 1.0

4. Creando una Conexin JDBC


Ahora que ya conocemos los conceptos bsicos de JDBC a manera de ejemplo crearemos una clase que nos permita realizar la conexin y obviamente ejecutar consultas, explicare cada una de los objetos implicados, mtodos y excepciones.

4.1 Importando la clase java.sql


Para empezar este ejemplo debemos primeramente la clase java.sql, que nos permitira utilizar los objetos de esta librera, no es necesario importarla en un principio ya que podemos importarla al momento de definir los objetos:

Import java.sql.*;

16/05/2010

Geniz v. 1.0

4.2 Cargando el Driver


Ahora crearemos una clase java y un mtodo esttico llamado Conexion (Recuerde que java es case sensitive; es decir, distingue entre maysculas y minsculas):
public class JDBC { public static void Conexion{
//Registramos el driver a travs de: Class.forName(<NombreDriverr>), el nombre del driver varia en funcion de la base de datos utilizada por ejemplo, mysql: com.mysql.jdbc.Driver, Derby: org.apache.derby.jdbc.ClientDrive , HSQLDB: org.hsqldb.jdbcDriver,etc. //Protegemos la excepcin con un bloque try y utilizando ClassNotFoundException //El driver deber estar cargado en la classpath.

try {Class.forName("com.mysql.jdbc.Driver"); }catch (ClassNotFoundException e) { System.out.println(Error debido a: " + e); }


16/05/2010 Geniz v. 1.0 6

4.3 El Objeto Connection


El objeto Connection parte de la librera java.sql es el encargado de realizar al conexin a travs del objeto DriverManager y su mtodo getConnection el cual recibe como parmetros: URL, Usuario y Contrasea. Tambien contiene metodos para cerrar la conexin, habilitar las consultas para el objeto Statement, etc. java.sql.DriverManager getConnection(String url, String usuario, String password) throws SQLException java.sql.Connection Statement createStatement() throws SQLException void close() throws SQLException void setAutoCommit(boolean b) throws SQLException void commit() throws SQLException void rollback() throws SQLException
16/05/2010 Geniz v. 1.0 7

Cdigo para realizar la conexin:

//Protegemos el codigo, utilizamos la excepcin del tipo SQLException try { //Declaramos el objeto Connection Connection conexion = null; //Creamos la conexin con la URL, usuario y password Conexin=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/MyD B", usuario"," password"); /*Finamente atrapamos la excepcin , esta generalmente ocurrir si la conexin no se puede establecer*/ } catch(SQLException e) { System.out.println(" Error al intentar conectarse" + e); }
16/05/2010 Geniz v. 1.0 8

4.4 El Objeto Statement


Una vez realizada la conexin ser necesario crear un objeto Statement, el cual nos permitir la ejecucin de consultas SQL, este objeto ser creado a partir de connection, puede usar el mismo statement para ejecutar N consultas: java.sql.Statement ResultSet executeQuery(string sql) int executeUpdate(String sql) Ejemplo: Statement statement = conexion.createStatement();

16/05/2010

Geniz v. 1.0

4.5 Statement: executeQuery & executeUpdate


Ahora que el objeto statement esta listo para ejecutar consultas, mencinare que tenemos dos metodos q nos permiten realizarlo: 1) executeQuey: Permite ejecutar consultas con el comando SELECT 2) executeUpdate: Permite realizar consultas con los comando UPDATE y DELETE. //Almacenaremos los datos en un ResultSet executeQuery (SELECT) ResultSet rs = statement.executeQuery(SELECT * FROM tabla"); //Retornara el numero de registros modificados executeUpdate(UPDATE/DELETE) int numero= statement.executeUpdate(UPDATED tabla SET nombre = Geniz' WHERE id = 12345");

16/05/2010

Geniz v. 1.0

10

4.4 El Objeto ResultSet


ResultSet tambin parte de java.sql, se encargar de almacenar los datos obtenidos de la ejecucin de una consulta SQL, a travs de este, podemos iterar entre nuestros registros. Cabe mencionar que este objeto es de tipo booleano y los datos almacenados se cargaran por medio de la consulta ejecutada en el objeto Statement. java.sql.ResultSet boolean next() getInt(int Numerocolumna) getString(String Nombrecolumna) getXXX(int o String Columna) void close()
getXXX es metodo que corresponde con cada objeto de la biblioteca java.sql.Types

Este iterador es posicionado a la primera fila en el indice cero Debemos utilizar el metodo next() para desplazarnos al siguiente registro.
16/05/2010 Geniz v. 1.0 11

4.4 El Objeto ResultSet (Ejemplo)


//Datos cargados previamente ResultSet rs = statement.executeQuery(SELECT * FROM tabla"); //Como podr darse cuenta utilizando un while y con el metodo next() iteramos entre los datos, este bucle se ejecuta cada vez que next(tipo boleano) regresa un valor true, de lo contrario el ciclo terminara indicando que se ha llegado hasta el ultimo registro. while (rs.next()){ // Incorrecto String value0 = rs.getString(0); // Correcto String value1 = rs.getString(1); int value2 = rs.getInt(2); int value3 = rs.getInt(ADDR_LN1"); }
16/05/2010 Geniz v. 1.0 12

4.5 Metadatos
Para finalizar esta primera parte concluiremos con un poco de metadatos, un Metadatos son informacin sobre los datos, en este caso informacin sobre los objetos de nuestra base de datos y sobre las consultas, para ello utilizaremos ResultSetMetaData & DatabaseMetaData. Que son objetos que utilizan Connection y Resultset:

ResultSetMetaData rsMeta = rs.getMetaData(); DatabaseMetaData dbmetadata = conexion.getMetaData();

16/05/2010

Geniz v. 1.0

13

4.5 Metadatos (Ejemplo)


Objeto ResultSet cargado de datos a travs de Statement

ResultSetMetaData rsmd = rs.getMetaData(); Column = rsmd.getColumnCount(); //Extraemos el Num de Columnas for (int i =1 ; i <= Column ; i++){ //Extraemos el nombre System.out.println(Nombre: " + rsmd.getColumnName(i)) //Extraemos el Tipo de Dato System.out.println(Tipo: " + rsmd.getColumnType(i)); //Extraemos el Tamao del dato(Columna) System.out.println(" Tamao: " + rsmd.getColumnDisplaySize(i) ); }

16/05/2010

Geniz v. 1.0

14

Fin de la parte 1, en la parte 2 veremos los objetos y mtodos avanzados de javax.sql y recuerden que si tienen dudas me pueden escribir en: http://ajdgeniz.wordpress.com

16/05/2010

Geniz v. 1.0

15

S-ar putea să vă placă și