Aprenda jdbc en n diapositivas

10,001 views

Published on

Manual de JDBC parte 1

Published in: Technology
3 Comments
13 Likes
Statistics
Notes
No Downloads
Views
Total views
10,001
On SlideShare
0
From Embeds
0
Number of Embeds
1,589
Actions
Shares
0
Downloads
0
Comments
3
Likes
13
Embeds 0
No embeds

No notes for slide

Aprenda jdbc en n diapositivas

  1. 1. Aprenda en N Diapositivas (Parte 1) Por: Domínguez Geniz Amalio Javier < ajdgeniz@hotmail.com geniz.tecnologico@gmail.com ajdgeniz@yahoo.com.mx > Java and all java-based http://ajdgeniz.wordpress.com trademarks are trademarks of Oracle Corporation in the U.S.A., Copyright 2010. Domínguez Geniz other countries or both. Tecnológico de Estudios Superiores de Chalco Amalio Javier 16/05/2010 Geniz v. 1.0 1
  2. 2. 1. ¿Que es JDBC? JDBC es Acrónimo de Java DataBase Conectivity, es una API estándar 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 mayoría de los casos suministrado por terceros. 16/05/2010 Geniz v. 1.0 2
  3. 3. 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 métodos 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
  4. 4. 3. URL de la base de datos La URL o Dirección de la base de datos es una cadena de texto que nos ayuda a conectarnos directamente a la base de datos, las URL’s deben de tener los siguientes datos: un nombre de servidor, un puerto, un protocolo, en algunas ocasiones la ubicación física 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
  5. 5. 4. Creando una Conexión JDBC Ahora que ya conocemos los conceptos básicos de JDBC a manera de ejemplo crearemos una clase que nos permita realizar la conexión y obviamente ejecutar consultas, explicare cada una de los objetos implicados, métodos 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 librería, 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 5
  6. 6. 4.2 Cargando el Driver Ahora crearemos una clase java y un método estático llamado Conexion (Recuerde que java es case sensitive; es decir, distingue entre mayúsculas y minúsculas): public class JDBC { public static void Conexion{ //Registramos el driver a través 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 excepción 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
  7. 7. 4.3 El Objeto Connection El objeto Connection parte de la librería java.sql es el encargado de realizar al conexión a través del objeto DriverManager y su método getConnection el cual recibe como parámetros: URL, Usuario y Contraseña. Tambien contiene metodos para cerrar la conexión, 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
  8. 8. Código para realizar la conexión: //Protegemos el codigo, utilizamos la excepción del tipo SQLException try { //Declaramos el objeto Connection Connection conexion = null; //Creamos la conexión con la URL, usuario y password Conexión=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/MyD B", “usuario"," password"); /*Finamente atrapamos la excepción , esta generalmente ocurrirá si la conexión no se puede establecer*/ } catch(SQLException e) { System.out.println(" Error al intentar conectarse" + e); } 16/05/2010 Geniz v. 1.0 8
  9. 9. 4.4 El Objeto Statement Una vez realizada la conexión será necesario crear un objeto Statement, el cual nos permitirá la ejecución 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 9
  10. 10. 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
  11. 11. 4.4 El Objeto ResultSet ResultSet también parte de java.sql, se encargará de almacenar los datos obtenidos de la ejecución de una consulta SQL, a través 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 getXXX es metodo que boolean next() corresponde con cada objeto getInt(int Numerocolumna) de la biblioteca java.sql.Types getString(String Nombrecolumna) getXXX(int o String Columna) void close() 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
  12. 12. 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
  13. 13. 4.5 Metadatos Para finalizar esta primera parte concluiremos con un poco de metadatos, un Metadatos son información sobre los datos, en este caso información 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
  14. 14. 4.5 Metadatos (Ejemplo) Objeto ResultSet cargado de datos a través 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 Tamaño del dato(Columna) System.out.println(" Tamaño: " + rsmd.getColumnDisplaySize(i) ); } 16/05/2010 Geniz v. 1.0 14
  15. 15. Fin de la parte 1, en la parte 2 veremos los objetos y métodos 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

×