DuocUC Tópicos Avanzados de Programación (TAP3501) Ariel Alexis Fierro Sáez afierrosaez@gmail.com
Uso JDBC en Java
Uso JDBC en aplicaciones java Class.forName("driver") Cargar/Registrar el driver JDBC DriverManager.getConnection ( url, usr, pwd) con.createstatement(); con.preparestatement(); con.preparecall(); stmt.executequery(); stmt.executeupdate(); (create, alter, drop) DDL (insert, update, delete) DML stmt.close(); con.close(); Obtener la conexión Crear el comando SQL Ejecutar el comando SQL Procesa los resultados. Liberar recursos Retorna objeto tipo Conecction (con) Retorna objeto tipo Statement (stmt) DML, DDL executeupdate(); select executequery()
1- Cargar Driver JDBC Para conectarnos a una base de datos a través JDBC desde una aplicación java, lo primero que necesitamos es cargar el driver. Sintaxis: Class.forName("com.mysql.jdbc") Facilitado por el fabricante Llamando a Class.forName la aplicación java cargara el driver JDBC y entonces ya nos podemos conectar con la base de datos invocando el metodo DriverManager.getConnection.
2- Obtener la conexión Una vez cargado el driver, utilizaremos el método getconnection parque define una URL la cual indicara la ubicación de la base de datos. Sintaxis: usuario clave Connection con = DriverManager.getConnection(url, usr, psw) jdbc:<subprotocolo>:<subnombre> Es el protocolo Identifica el driver Dirección del servidor y el nombre de la base de datos
2- Obtener la conexión Caso mysql String url = "jdbc:mysql://localhost/nombrebasedatos"; String usr = "UsuarioBaseDatos"; String psw = "ClaveBaseDatos"; try { Connection con = DriverManager.getConnection(url,usr,psw); } catch (SQLException ex) { System.out.println(ex.getMessage()); }
3- Crear comandos SQL Una vez creada la conexión a la base de datos, podemos crear sentencias SQL utilizando la interfaz Statement que nos provee métodos para realizar dichas tareas. Sintaxis Statement stmt = con.createstatement ();
4- Ejecutar comandos SQL Una vez creada la sentencia SQL necesario ejecutar a través de dos métodos: Menos sentencia SELECT executeupdate DML + DDL (retorna nro. registros afectados) executequery SELECT (retorna objeto ResultSet con un conjunto de registros)
5- Procesar los resultados Sintaxis caso sentencia SELECT String query = "select * from producto"; ResultSet rt = stmt.executequery(query); Sintaxis caso DML+DDL String query = "update producto set descripcion= Silla where id_prod=34"; Int rt = stmt.executeupdate(query);
5- Procesar los resultados El objeto del tipo ResultSet controla la recuperación de los registros de la consulta SELECT: Para recorrer los registros recuperados utilizaremos los métodos next() y previus(), los cuales nos permitirán desplazarnos por el conjunto de tuplas. Inicialmente el objeto rt se encuentra apuntando al primer registro, del conjunto de tuplas.
5- Procesar los resultados Para acceder a cada columna de las tuplas podemos acceder de dos alternativas : rt.getstring(nombre_columna) //según nombre columna rt.getstring(1) //según posición columna El acceso por posiciones es útil cuando: Acceso a una columna derivada, por ejemplo el promedio Cuando hay columnas con el mismo nombre (por un join)
5- Procesar los resultados Sentencia ejemplo, recorrer un ResultSet: while (rt.next()) { System.out.println("Cod. Producto="+rt.getString("id_prod")); System.out.println(«Des. Producto="+rt.getString(" descripcion ")); }
6- Liberar recursos Sentencia ejemplo, recorrer un ResultSet: while (rt.next()) { System.out.println("Cod. Producto="+rt.getString("id_prod")); System.out.println(«Des. Producto="+rt.getString(" descripcion ")); }
Cargar algunos driver JDBC
Referencias JDBC http://www.javasamples.com/showtutorial.php?tutorialid=624 Driver JDBC http://www.sql-workbench.net/manual/jdbcsetup.html Driver oficiales JDBC http://devapp.sun.com/product/jdbc/drivers