16

Click here to load reader

Java con base de datos

Embed Size (px)

Citation preview

Page 1: Java con base de datos

Carrera: Ingeniería de sistemas y telemáticaCurso: Desarrollo de software i.Tema: Java con base de datosDocente: Marco Aurelio Porro ChulliIntegrantes:

Erlin Darwin herrera cieza. Yosmer Aguilar cabrera.

Page 2: Java con base de datos

Primero descargar el controlador JDBC.Java Database Connectivity, más conocida por sus siglas JDBC, es una API que permite la ejecución de operaciones sobre base de datos desde el Lenguaje de programación java,El API JDBC se presenta como una colección de interfaces de java y métodos de gestión de manejadores de conexión hacia cada modelo específico de base de datos.Para utilizar una base de datos particular, el usuario ejecuta su programa junto con la biblioteca de conexión apropiada al modelo de su base de datos, y accede a ella estableciendo una conexión; para ello provee el localizador a la base de datos y los parámetros de conexión específicos. A partir de allí puede realizar cualquier tipo de tarea con la base de datos a la que tenga permiso: consulta, actualización, creación, modificación y borrado de tablas,Si ya lo emos descargado solo le importamos o agregamos a nuestro proyecto.

Page 3: Java con base de datos

Conectividad de Bases de Datos de Java (JDBC)Se considera el primer producto estándar de Java con DBMS, creado y ofrecido por primera vez en marzo de 1996.Crea una interfaz con un nivel de programación que le permite comunicarse con las bases de datos mediante un concepto similar al de componentes ODBC.El estándar de JDBC está basado en un nivel de interfaz con instrucciones SQL X/Open, que es básicamente lo mismo que en ODBC.El puente JDBC-ODBC manipula la traducción de llamadas JDBC a aquellas que puedan ser entendidas por el cliente ODBC a un nivel de lenguaje C.Las clases de objetos para iniciar la transacción con la base de datos, están escritas completamente en Java .

Page 4: Java con base de datos

JDBC vs. ODBCEn java se usa jdbc por las siguientes maneras

• ODBC usa una interface escrita con el lenguaje de programación C. Por lo tanto como que C no es un lenguaje portable las aplicaciones JAVA perderían también automáticamente su portabilidad.

• ODBC se ha de instalar manualmente en cada máquina, en cambio los drivers de JDBC como están escritos en JAVA son automáticamente instalables, portables y seguros.

Hay que decir también, que existen drivers puente entre JDBC-ODBC.PUENTE JDBC/OBDC Sum ha diseñado un puente que permite utilizar la API de JDBC en combinación con controladores ODBC.

JDBC-ODBC bridge plus ODBC driver (tipo 1): este driver fue desarrollado entre Sun e Intersolv y permite al programador acceder a fuentes de datos ODBC existentes mediante JDBC.

Page 5: Java con base de datos

El primer programa con JDBC la API JDBC incluye varias clases que se deben utilizar para conseguir acceso a una Base de Datos.

Clase/Interface Descripción

DriverPermite conectarse a una Base de Datos: cada gestor de Base de Datos requiere un Driver distinto.

DriverManager Permite gestionar todos los Drivers instalados en el sistema.

DriverPropertyInfo Proporciona diversa información acerca de un Driver.

ConnectionRepresenta una conexión con una Base de Datos. Una aplicación puede tener más de una conexión a más de una Base de Datos.

DatabaseMetadata Proporciona información acerca de una Base de Datos, como las tablas que contiene, etc.

Statement Permite ejecutar sentencias SQL sin parámetros.

PreparedStatement Permite ejecutar sentencias SQL con parámetros de entrada.

CallableStatementPermite ejecutar sentencias SQL con parámetros de entrada y salida, típicamente procedimientos almacenados.

ResultSet Contiene las filas o registros obtenidos al ejecutar un SELECT.

ResultSetMetadata Permite obtener información sobre un ResultSet, como el número de columnas, sus nombres, etc.

Page 6: Java con base de datos

Como conectarnos a una base de datso.Establecer una conexión con una Base de Datos mediante JDBC es sencillo: en primer lugar, registramos el Driver a utilizar (que en nuestro caso es el puente JDBC/ODBC), mediante el códigoClass.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );para que no se produzca un error al momento de conectarnos.A continuación, se lleva a cabo la conexión a la Base de Datos mediante el códigoConnection conexion = DriverManager.getConnection( urlBD, usuarioBD, passwordBD );La clase DriverManager gestiona los Drivers registrados en el sistema: al llamar a getConnection, recorre la lista de Drivers cargados hasta encontrar uno que sea capaz de gestionar la petición especificada por urlBDLos parámetros usuarioBD y passwordBD corresponden al nombre del usuario y su contraseña, necesarios la mayor parte de las veces para acceder a cualquier Base de Datos.

Page 7: Java con base de datos

La cadena utilizada para indicar la Base de Datos siempre tiene tres partes, separadas por el carácter ":". La primera parte es siempre "jdbc". La segunda parte indica el subprotocolo, y depende del Sistema de Gestión de Base de Datos utilizado: en nuestro caso, es "odbc", pero paraSQLAnyware, por ejemplo, es "dbaw". La tercera parte identifica la Base de Datos concreta a la que le deseamos conectar.Y para cerrar la conexión se escribe el siguiente códigoconexión.close();

Page 8: Java con base de datos

Al utilizar la API JDBC es posible obtener diversos errores debido a que se ha escrito incorrectamente una sentencia SQL, a que no se puede establecer una conexión con la Base de Datos por cualquier problema, etc.El paquete java.sql proporciona tres nuevas excepciones

Excepción Descripción

SQLException Error SQL.SQLWarning Advertencia SQL.

DataTruncation

Producida cuando se truncan datos inesperadamente, por ejemplo al intentar almacenar un texto demasiado largo en un campo.

Page 9: Java con base de datos

El Objeto Connection.Un objeto Connection representa una conexión a una base de datos.Una misma aplicación puede tener una o más conexiones con una sola base de datos o puede tener conexiones con varias bases de datos diferentes. La forma estándar de establecer una conexión con una base de datos es llamando al método DriverManager.getConnection. siguiente código ejemplifica cómo abrir una conexión a una base de datos • “jdbc:odbc:wombat”: String url = jdbc:odbc:wombat; • Connection con = DriverManager.getConnection(url); • Una URL de JDBC facilita una forma de identificar una base de datos de

forma que el driver apropiado la reconozca y establezca una conexión con ella. La sintaxis estándar para URLs de JDBC es la siguiente:

• Jdbc:<subprotocolo>:<subnombre>

Page 10: Java con base de datos

El Objeto Statement Un objeto Statement se usa para enviar sentencias SQL a una base de datos. Una vez que se ha establecido una conexión con una base de datos particular, esa conexión puede ser usada para enviar sentencias SQL. esa conexión puede ser usada para enviar sentencias SQL.

Creación de objetos StatementEl siguiente código crea un bojeto StatementConnection con = DriverManager.getConnection(url); Statement stmt = con.createStatement();

• La sentencia SQL que será enviada a la base de datos es proporcionada como argumento a uno de los métodos para ejecutar un objeto Statement:

• ResultSet rs = stmt.executeQuery(SELECT a, b, c FROM Nomtable);

Page 11: Java con base de datos

EL Objeto ResultSetUn ResultSet contiene todos los registros (filas) que satisfacen las condiciones impuestas en una sentencia SQL y proporciona acceso a los datos en dichos registros a través de un conjunto de métodos get que permiten acceder a los diferentes campos o atributos (columnas) del registro actual. Un ResultSet mantiene un cursor que apunta al registro actual.El método ResultSet.next() se usa para moverse al siguiente registro del ResultSetLos métodos getXXX proporcionan los medios para obtener los valores de los campos, atributos o columnas del registro actualla siguiente porción de código imprimiría los valores de todos los registros:• while(rs.next()){ • int i = rs.getInt(″a″); • String s = rs.getString(″b″); • Float f = rs.getFloat(″c″); System.out.println(″ROW= ″ +i+ ″ ″ +s+ ″ ″ + f); }

Page 12: Java con base de datos

EjemploPara realizar la conexión a base de datos desde java necesitamos hacer uso de JDBC. Las bases de datos que deseemos conectar deberán proveernos el driver JDBC en un empaquetado JAR para añadirlo a las librerías del proyecto.NetBeans se podría ir al directorio Libraries del Proyecto, hacer clic derecho sobre el y elegir Add Library y en la lista podría encontrase la que necesitemos, o si queremos agregarla manualmente Add JAR/Folder y seleccionar desde la dirección donde lo tenemos almacenado.Y da clic en add Library.

Page 13: Java con base de datos

• Bueno ha hora empieza la programación te lo boy hacer por pates

package beastieux.gui;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;import java.sql.ResultSet;import javax.sql.rowset.CachedRowSet;import com.sun.rowset.CachedRowSetImpl;

Page 14: Java con base de datos

• public class Ejm1_ConectarDataBase {• public CachedRowSet Function(String sql)• {• try• {• Class.forName("Driver");• String url = "jdbc:motor:servidor:puerto/basededatos";• Connection con = DriverManager.getConnection(url, "usuario","contraseña");• Statement s = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,• ResultSet.CONCUR_READ_ONLY);• ResultSet rs= s.executeQuery(sql);• CachedRowSet crs = new CachedRowSetImpl();• crs.populate(rs);• rs.close();• s.close();• con.close();• return crs;• }

Page 15: Java con base de datos

catch(Exception e) { System.out.println(e.getMessage()); } return null; } public void StoreProcedure(String sql) { try { Class.forName("Driver"); String url = "jdbc:motor:servidor:puerto/basededatos"; Connection con = DriverManager.getConnection(url, "usuario","contraseña"); Statement s = con.createStatement(); s.execute(sql); s.close(); con.close(); } catch(Exception e) { System.out.println(e.getMessage()); }}}

Page 16: Java con base de datos

• Como habrán podido apreciar en el código, el manejo de excepciones es relativamente sencilla, lo ideal sería especificar las excepciones por cada conexion, statement y resultset para de esa manera asegurarnos que permanezcan cerradas al finalizar la ejecución o aun cuando existieran errores; de igual manera sería muy útil obligar a cerrar las conexiones desde dentro de una clausula finally anexada al try – catch.

• Por último la url de conexión “jdbc:motor:servidor:puerto/basededatos”, variará a continuación de jdbc, según el motor de base de datos al que deseemos conectarnos (PostgreSQL, MySQL, Oracle, Derby, etc) , la dirección IP del servidor, el puerto y finalmente el nombre de la base de datos al que queramos acceder.