SlideShare una empresa de Scribd logo
1 de 13
JAVA CON BASE DE
DATOS
DEFINICIÓN
En la mayoría de las aplicaciones que nos vamos a encontrar, aparecerá una
base de datos como fuente de información. JDBC nos va a permitir acceder a
bases de datos (BD) desde Java. Con JDBC no es necesario escribir distintos
programas para distintas BD, sino que un único programa sirve para acceder
a BD de distinta naturaleza. Incluso, podemos acceder a más de una BD de
distinta fuente (Oracle, Access, MySql, etc.) en la misma aplicación. Podemos
pensar en JDBC como el puente entre una base de datos y nuestro programa
Java. Un ejemplo sencillo puede ser un applet que muestra dinámicamente
información contenida en una base de datos. El applet utilizará JDBC para
obtener dichos datos.
El esquema a seguir en un programa que use JDBC es el siguiente:
Un programa Java que utilice JDBC primero deberá establecer una conexión con el SGBD.
Para realizar dicha conexión haremos uso de un driver específico para cada SGBD que estemos
utilizando. Una vez establecida la conexión ya podemos interrogar la BD con cualquier
comando SQL (select, update, create, etc.). El resultado de un comando select es un objeto de
la clase ResultSet, que contiene los datos que devuelve la consulta. Disponemos de métodos en
ResultSet para manejar los datos devueltos. También podemos realizar cualquier operación en
SQL (creación de tablas, gestión de usuarios, etc.).
Para realizar estas operaciones necesitaremos contar con un SGBD (sistema
gestor de bases de datos) además de un driver específico para poder acceder a
este SGBD. Vamos a utilizar dos SGBD: MySQL (disponible para Windows y Linux,
de libre distribución) y PostGres (sólo para Linux, también de libre distribución).
Drivers de acceso
Los drivers para poder acceder a cada SGBD no forman parte de la distribución de
Java por lo que deberemos obtenerlos por separado. ¿Por qué hacer uso de un
driver?. El principal problema que se nos puede plantear es que cada SGBD
dispone de su propio API (la mayoría propietario), por lo que un cambio en el
SGBD implica una modificación de nuestro código. Si colocamos una capa
intermedia, podemos abstraer la conectividad, de tal forma que nosotros
utilizamos un objeto para la conexión, y el driver se encarga de traducir la llamada
al API. El driver lo suelen distribuir las propias empresas que fabrican el SGBD.
Tipos de drivers
Existe un estándar establecido que divide los drivers en cuatro grupos:
■ Tipo 1: Puente JDBC-ODBC. ODBC (Open Database Connectivity) fue creado para
proporcionar una conexión a bases de datos en Microsoft Windows. ODBC permite
acceso a bases de datos desde diferentes lenguajes de programación, tales como
C y Cobol. El puente JDBC-ODBC permite enlazar Java con cualquier base de datos
disponible en ODBC. No se aconseja el uso de este tipo de driver cuando tengamos
que acceder a bases de datos de alto rendimiento, pues las funcionalidades están
limitadas a las que marca ODBC. Cada cliente debe tener instalado el driver. J2SE
incluye este driver en su versión Windows y Solaris.
■ Tipo 2: Parte Java, parte driver nativo. Es una combinación de implementación
Java y API nativo para el acceso a la base de datos. Este tipo de driver es más
rápido que el anterior, pues no se realiza el paso por la capa ODBC. Las llamadas
JDBC se traducen en llamadas específicas del API de la base de datos. Cada
cliente debe tener instalado el driver. Tiene menor rendimiento que los dos
siguientes y no se pueden usar en Internet, ya que necesita el API de forma local.
■ Tipo 3: Servidor intermediario de acceso a base de datos. Este tipo de
driver proporciona una abstracción de la conexión. El cliente se conecta a
los SGBD mediante un componente servidor intermedio, que actúa como
una puerta para múltiples servidores. La ventaja de este tipo de driver es
el nivel de abstracción. El servidor de aplicaciones WebLogic incorpora
este tipo de driver.
■ Tipo 4: Drivers Java. Este es el más directo. La llamada JDBC se traduce
directamente en una llamada de red a la base de datos, sin
intermediarios. Proporcionan mejor rendimiento. La mayoría de SGBD
proporcionan drivers de este tipo.
Conexión a la BD
Una vez cargado el driver apropiado para nuestro SGBD deberemos establecer la
conexión con la BD. Para ello utilizaremos el siguiente método:
La conexión a la BD está encapsulada en un objeto Connection. Para su creación
debemos proporcionar la url de la BD y, si la BD está protegida con contraseña, el
login y password para acceder a ella. El formato de la url variará según el driver que
utilicemos. Sin embargo, todas las url tendrán la siguiente forma general:
jdbc:<subprotocolo>:<nombre>, con subprotocolo indicando el tipo de SGBD y con
nombre indicando el nombre de la BD y aportando información adicional para la
conexión.
1
2
Connection con = DriverManager.getConnection(url);
Connection con = DriverManager.getConnection(url, login, password);
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 {
lass.forName("com.mysql.jdbc.Driver").newInstance
conn = DriverManager.getConnection(url,login,password);
if (conn != null) {
System.out.println("Conexiónse de datos "+url+" ... Ok");
conn.close(); } }
catch(SQLException ex) {
System.out.println(ex); }
catch(ClassNotFoundException ex) {
System.out.println(ex); } }
}
Objeto Statement
Se usa para enviar sentencias SQL a la base de datos. Actualmente hay tres tipos
de objetos Statement, todos los cuales actúan como contenedores para la
ejecución de sentencias en una conexión dada: Statement, PreparedStatement
que hereda de Statement y CallableStatement que hereda de
PreparedStatement. Estas estàn especializadas para enviar tipos particulares de
sentencias SQL, Un objeto Statement se usa para ejecutar una sentencia SQL
simple sin parámetros. Un objeto PreparedStatement se usa para ejecutar
sentencias SQL precompiladas con o sin parámetros IN; y un objeto
CallableStatement se usa para ejecutar un procedimieno de base de datos
almacenado.
La interfase Statement suminstra métodos básicos para ejecutar sentencias y
devolver resultados. La interfase PreparedStatement añade métodos para
trabajat con los parámetros IN; y la interfase CallableStatement añade métodos
para trabajar con parameters OUT.
Creación de objetos Statement
Una vez establecida la conexión con una base de datos particular, esta conexión
puede usarse para enviar sentencias SQL. Un objeto Statement se crea
mediante el método de Connection createStatement, como podemos ver en el
siguiente fragmento de código.
Connection con = DriverManager.getConnection(url, "sunny", "");
Statement stmt = con.createStatement();
La sentencia SQL que será enviada a la base de datos es alimentada como un
argumento a uno de los métodos de ejecución del objeto Statement. Por
ejemplo:
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table2");
Ejecución de sentencias usando objetos Statement.
La interfase Statement nos suministra tres métodos diferentes para ejecutar
sentencias SQL, executeQuery, executeUpdate y execute. El método a usar esta
determinado por el producto de la sentencia SQL.
Objeto Resultset
Es la representación en memoria de las tablas de la base de datos en disco, se puede entender
como una tabla virtual, recordar que generalmente todos los procesos que se realizen con la
tabla (insertar registros, eliminar registros, etc) se realizaran realmente contra un resulset y no
provocaran ningun cambio en la tabla fisica en disco, resulset tiene un conjunto de metodos
muy utiles y muy usados para el proceso de los renglones de la tabla virtual.
Ejemplo:
// declarando y creando objetos globales
Connection canal = null;
ResultSet tabla= null;
Statement instruccion=null;
String strcon = "jdbc:mysql://localhost/mibase?user=lauro&password=laurosoto";
// abriendo canal o enlace en su propio try-catch
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
canal=DriverManager.getConnection(strcon);
instruccion = canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
} catch(java.lang.ClassNotFoundException e){} catch(SQLException e) {};

Más contenido relacionado

La actualidad más candente

La actualidad más candente (18)

Jsp servlet- Tutorial BD Conexión
Jsp servlet- Tutorial BD ConexiónJsp servlet- Tutorial BD Conexión
Jsp servlet- Tutorial BD Conexión
 
JDBC
JDBCJDBC
JDBC
 
Java y Bases de Datos
Java y Bases de DatosJava y Bases de Datos
Java y Bases de Datos
 
JDBC(conjunto de clases e interfaces)
JDBC(conjunto de clases e interfaces)JDBC(conjunto de clases e interfaces)
JDBC(conjunto de clases e interfaces)
 
JDBC
JDBCJDBC
JDBC
 
Conexion a bases de datos
Conexion a bases de datosConexion a bases de datos
Conexion a bases de datos
 
Curso Básico de JDBC
Curso Básico de JDBCCurso Básico de JDBC
Curso Básico de JDBC
 
Connection
ConnectionConnection
Connection
 
Connection Pool + Java + MySQL
Connection Pool + Java + MySQLConnection Pool + Java + MySQL
Connection Pool + Java + MySQL
 
Creando y configurando un data source a mysql en glassfish4
Creando y configurando un data source a mysql en glassfish4Creando y configurando un data source a mysql en glassfish4
Creando y configurando un data source a mysql en glassfish4
 
Trabajo de jdbc
Trabajo de jdbcTrabajo de jdbc
Trabajo de jdbc
 
T2 - JDBC
T2 - JDBCT2 - JDBC
T2 - JDBC
 
Jdbc (Java Database Connectivity)
Jdbc (Java Database Connectivity)Jdbc (Java Database Connectivity)
Jdbc (Java Database Connectivity)
 
Tema 5
Tema 5Tema 5
Tema 5
 
11.android bases de datos
11.android   bases de datos11.android   bases de datos
11.android bases de datos
 
Jdbc
JdbcJdbc
Jdbc
 
Java.sql.*
Java.sql.*Java.sql.*
Java.sql.*
 
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado   1 IntroduccióN Al Desarrollo WebCurso Java Avanzado   1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
 

Similar a Java con base de datos

Bases Datos en java
Bases Datos en javaBases Datos en java
Bases Datos en java
jent46
 

Similar a Java con base de datos (20)

Ser vlet conectar con base de datos
Ser vlet conectar con base de datosSer vlet conectar con base de datos
Ser vlet conectar con base de datos
 
Jdbc Mysql
Jdbc MysqlJdbc Mysql
Jdbc Mysql
 
JAVA DATABASE CONNECTIVITY (JDBC)
  JAVA DATABASE CONNECTIVITY (JDBC)  JAVA DATABASE CONNECTIVITY (JDBC)
JAVA DATABASE CONNECTIVITY (JDBC)
 
Jdbc
JdbcJdbc
Jdbc
 
Jdbc
JdbcJdbc
Jdbc
 
Jdbc diapositivva
Jdbc diapositivvaJdbc diapositivva
Jdbc diapositivva
 
[ES] Conectividad de java a base de datos(jdbc)
[ES] Conectividad de java a base  de datos(jdbc)[ES] Conectividad de java a base  de datos(jdbc)
[ES] Conectividad de java a base de datos(jdbc)
 
Qué es jdbc
Qué es jdbcQué es jdbc
Qué es jdbc
 
Java y Bases Datos
Java y Bases DatosJava y Bases Datos
Java y Bases Datos
 
Bases Datos en java
Bases Datos en javaBases Datos en java
Bases Datos en java
 
Bases de Datos en en www.fiec.espol.edu.ec
Bases de Datos en  en www.fiec.espol.edu.ecBases de Datos en  en www.fiec.espol.edu.ec
Bases de Datos en en www.fiec.espol.edu.ec
 
Java DataBase Connectivity
Java DataBase ConnectivityJava DataBase Connectivity
Java DataBase Connectivity
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Java con Base de Datos
Java con Base de DatosJava con Base de Datos
Java con Base de Datos
 
Diapositivas de jdbc
Diapositivas de jdbcDiapositivas de jdbc
Diapositivas de jdbc
 
Clase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de SistemasClase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de Sistemas
 
Jdbc(desarrollo de software i yanina y yenny)
Jdbc(desarrollo de software i yanina y yenny)Jdbc(desarrollo de software i yanina y yenny)
Jdbc(desarrollo de software i yanina y yenny)
 
Trabajo de jdbc
Trabajo de jdbcTrabajo de jdbc
Trabajo de jdbc
 
JDBC
JDBC JDBC
JDBC
 
Jdbc
JdbcJdbc
Jdbc
 

Más de GREINDER MARCHENA & LIZ VASQUEZ

Más de GREINDER MARCHENA & LIZ VASQUEZ (20)

Aplicaciones
AplicacionesAplicaciones
Aplicaciones
 
Programación de aplicaciones móviles
Programación de aplicaciones móvilesProgramación de aplicaciones móviles
Programación de aplicaciones móviles
 
Java y xml
Java y xmlJava y xml
Java y xml
 
Android studio
Android studioAndroid studio
Android studio
 
Prepared statement
Prepared statementPrepared statement
Prepared statement
 
Control jtable con base de datos
Control jtable con base de datosControl jtable con base de datos
Control jtable con base de datos
 
Result set
Result setResult set
Result set
 
Statement
StatementStatement
Statement
 
Connection
ConnectionConnection
Connection
 
Objeto command
Objeto commandObjeto command
Objeto command
 
Objeto connection
Objeto connectionObjeto connection
Objeto connection
 
Espacio de nombres System.Data.SQLClient
Espacio de nombres System.Data.SQLClientEspacio de nombres System.Data.SQLClient
Espacio de nombres System.Data.SQLClient
 
ADO.NET
ADO.NETADO.NET
ADO.NET
 
GESTOR DE BASE DE DATOS
GESTOR DE BASE DE DATOSGESTOR DE BASE DE DATOS
GESTOR DE BASE DE DATOS
 
PROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOSPROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOS
 
APLICACIONES N-CAPAS EN VISUAL NET
APLICACIONES N-CAPAS EN VISUAL NETAPLICACIONES N-CAPAS EN VISUAL NET
APLICACIONES N-CAPAS EN VISUAL NET
 
Vistas en SQL
Vistas en SQLVistas en SQL
Vistas en SQL
 
TABLAS Y TIPOS DE DATOS
TABLAS Y TIPOS DE DATOSTABLAS Y TIPOS DE DATOS
TABLAS Y TIPOS DE DATOS
 
Base de Datos en SQL
Base de Datos en SQLBase de Datos en SQL
Base de Datos en SQL
 
Lenguaje Transact-SQL
Lenguaje Transact-SQLLenguaje Transact-SQL
Lenguaje Transact-SQL
 

Último

PLAN LECTOR QUINTO 2023 educación primaria de menores Quinto grado
PLAN LECTOR QUINTO 2023  educación primaria de menores Quinto gradoPLAN LECTOR QUINTO 2023  educación primaria de menores Quinto grado
PLAN LECTOR QUINTO 2023 educación primaria de menores Quinto grado
Santosprez2
 
Apunte clase teorica propiedades de la Madera.pdf
Apunte clase teorica propiedades de la Madera.pdfApunte clase teorica propiedades de la Madera.pdf
Apunte clase teorica propiedades de la Madera.pdf
Gonella
 

Último (20)

Estudios Sociales libro 8vo grado Básico
Estudios Sociales libro 8vo grado BásicoEstudios Sociales libro 8vo grado Básico
Estudios Sociales libro 8vo grado Básico
 
2.15. Calendario Civico Escolar 2024.docx
2.15. Calendario Civico Escolar 2024.docx2.15. Calendario Civico Escolar 2024.docx
2.15. Calendario Civico Escolar 2024.docx
 
Lecciones 07 Esc. Sabática. Motivados por la esperanza
Lecciones 07 Esc. Sabática. Motivados por la esperanzaLecciones 07 Esc. Sabática. Motivados por la esperanza
Lecciones 07 Esc. Sabática. Motivados por la esperanza
 
ACERTIJO CÁLCULOS MATEMÁGICOS EN LA CARRERA OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO CÁLCULOS MATEMÁGICOS EN LA CARRERA OLÍMPICA. Por JAVIER SOLIS NOYOLAACERTIJO CÁLCULOS MATEMÁGICOS EN LA CARRERA OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO CÁLCULOS MATEMÁGICOS EN LA CARRERA OLÍMPICA. Por JAVIER SOLIS NOYOLA
 
ACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLAACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLA
 
Síndrome piramidal 2024 según alvarez, farrera y wuani
Síndrome piramidal 2024 según alvarez, farrera y wuaniSíndrome piramidal 2024 según alvarez, farrera y wuani
Síndrome piramidal 2024 según alvarez, farrera y wuani
 
REGLAMENTO FINAL DE EVALUACIÓN 2024 pdf.pdf
REGLAMENTO  FINAL DE EVALUACIÓN 2024 pdf.pdfREGLAMENTO  FINAL DE EVALUACIÓN 2024 pdf.pdf
REGLAMENTO FINAL DE EVALUACIÓN 2024 pdf.pdf
 
Sesión de clase Motivados por la esperanza.pdf
Sesión de clase Motivados por la esperanza.pdfSesión de clase Motivados por la esperanza.pdf
Sesión de clase Motivados por la esperanza.pdf
 
Revista Faro Normalista 6, 18 de mayo 2024
Revista Faro Normalista 6, 18 de mayo 2024Revista Faro Normalista 6, 18 de mayo 2024
Revista Faro Normalista 6, 18 de mayo 2024
 
Diapositivas unidad de trabajo 7 sobre Coloración temporal y semipermanente
Diapositivas unidad de trabajo 7 sobre Coloración temporal y semipermanenteDiapositivas unidad de trabajo 7 sobre Coloración temporal y semipermanente
Diapositivas unidad de trabajo 7 sobre Coloración temporal y semipermanente
 
PLAN LECTOR QUINTO 2023 educación primaria de menores Quinto grado
PLAN LECTOR QUINTO 2023  educación primaria de menores Quinto gradoPLAN LECTOR QUINTO 2023  educación primaria de menores Quinto grado
PLAN LECTOR QUINTO 2023 educación primaria de menores Quinto grado
 
TÉCNICAS OBSERVACIONALES Y TEXTUALES.pdf
TÉCNICAS OBSERVACIONALES Y TEXTUALES.pdfTÉCNICAS OBSERVACIONALES Y TEXTUALES.pdf
TÉCNICAS OBSERVACIONALES Y TEXTUALES.pdf
 
Realitat o fake news? – Què causa el canvi climàtic? - La desertització
Realitat o fake news? – Què causa el canvi climàtic? - La desertitzacióRealitat o fake news? – Què causa el canvi climàtic? - La desertització
Realitat o fake news? – Què causa el canvi climàtic? - La desertització
 
Apunte clase teorica propiedades de la Madera.pdf
Apunte clase teorica propiedades de la Madera.pdfApunte clase teorica propiedades de la Madera.pdf
Apunte clase teorica propiedades de la Madera.pdf
 
Comunidades Virtuales de Aprendizaje Caracteristicas.pptx
Comunidades Virtuales de Aprendizaje Caracteristicas.pptxComunidades Virtuales de Aprendizaje Caracteristicas.pptx
Comunidades Virtuales de Aprendizaje Caracteristicas.pptx
 
Seguridad y virus informáticos 12°B 2024
Seguridad y virus informáticos 12°B 2024Seguridad y virus informáticos 12°B 2024
Seguridad y virus informáticos 12°B 2024
 
3. ELEMENTOS QUE SE EMPLEAN EN LAS ESTRUCTURAS.pptx
3. ELEMENTOS QUE SE EMPLEAN EN LAS ESTRUCTURAS.pptx3. ELEMENTOS QUE SE EMPLEAN EN LAS ESTRUCTURAS.pptx
3. ELEMENTOS QUE SE EMPLEAN EN LAS ESTRUCTURAS.pptx
 
¿Que es Fuerza? online 2024 Repaso CRECE.pptx
¿Que es Fuerza? online 2024 Repaso CRECE.pptx¿Que es Fuerza? online 2024 Repaso CRECE.pptx
¿Que es Fuerza? online 2024 Repaso CRECE.pptx
 
Motivados por la esperanza. Esperanza en Jesús
Motivados por la esperanza. Esperanza en JesúsMotivados por la esperanza. Esperanza en Jesús
Motivados por la esperanza. Esperanza en Jesús
 
El liderazgo en la empresa sostenible, introducción, definición y ejemplo.
El liderazgo en la empresa sostenible, introducción, definición y ejemplo.El liderazgo en la empresa sostenible, introducción, definición y ejemplo.
El liderazgo en la empresa sostenible, introducción, definición y ejemplo.
 

Java con base de datos

  • 1. JAVA CON BASE DE DATOS
  • 2. DEFINICIÓN En la mayoría de las aplicaciones que nos vamos a encontrar, aparecerá una base de datos como fuente de información. JDBC nos va a permitir acceder a bases de datos (BD) desde Java. Con JDBC no es necesario escribir distintos programas para distintas BD, sino que un único programa sirve para acceder a BD de distinta naturaleza. Incluso, podemos acceder a más de una BD de distinta fuente (Oracle, Access, MySql, etc.) en la misma aplicación. Podemos pensar en JDBC como el puente entre una base de datos y nuestro programa Java. Un ejemplo sencillo puede ser un applet que muestra dinámicamente información contenida en una base de datos. El applet utilizará JDBC para obtener dichos datos.
  • 3. El esquema a seguir en un programa que use JDBC es el siguiente: Un programa Java que utilice JDBC primero deberá establecer una conexión con el SGBD. Para realizar dicha conexión haremos uso de un driver específico para cada SGBD que estemos utilizando. Una vez establecida la conexión ya podemos interrogar la BD con cualquier comando SQL (select, update, create, etc.). El resultado de un comando select es un objeto de la clase ResultSet, que contiene los datos que devuelve la consulta. Disponemos de métodos en ResultSet para manejar los datos devueltos. También podemos realizar cualquier operación en SQL (creación de tablas, gestión de usuarios, etc.).
  • 4. Para realizar estas operaciones necesitaremos contar con un SGBD (sistema gestor de bases de datos) además de un driver específico para poder acceder a este SGBD. Vamos a utilizar dos SGBD: MySQL (disponible para Windows y Linux, de libre distribución) y PostGres (sólo para Linux, también de libre distribución). Drivers de acceso Los drivers para poder acceder a cada SGBD no forman parte de la distribución de Java por lo que deberemos obtenerlos por separado. ¿Por qué hacer uso de un driver?. El principal problema que se nos puede plantear es que cada SGBD dispone de su propio API (la mayoría propietario), por lo que un cambio en el SGBD implica una modificación de nuestro código. Si colocamos una capa intermedia, podemos abstraer la conectividad, de tal forma que nosotros utilizamos un objeto para la conexión, y el driver se encarga de traducir la llamada al API. El driver lo suelen distribuir las propias empresas que fabrican el SGBD.
  • 5. Tipos de drivers Existe un estándar establecido que divide los drivers en cuatro grupos: ■ Tipo 1: Puente JDBC-ODBC. ODBC (Open Database Connectivity) fue creado para proporcionar una conexión a bases de datos en Microsoft Windows. ODBC permite acceso a bases de datos desde diferentes lenguajes de programación, tales como C y Cobol. El puente JDBC-ODBC permite enlazar Java con cualquier base de datos disponible en ODBC. No se aconseja el uso de este tipo de driver cuando tengamos que acceder a bases de datos de alto rendimiento, pues las funcionalidades están limitadas a las que marca ODBC. Cada cliente debe tener instalado el driver. J2SE incluye este driver en su versión Windows y Solaris. ■ Tipo 2: Parte Java, parte driver nativo. Es una combinación de implementación Java y API nativo para el acceso a la base de datos. Este tipo de driver es más rápido que el anterior, pues no se realiza el paso por la capa ODBC. Las llamadas JDBC se traducen en llamadas específicas del API de la base de datos. Cada cliente debe tener instalado el driver. Tiene menor rendimiento que los dos siguientes y no se pueden usar en Internet, ya que necesita el API de forma local.
  • 6. ■ Tipo 3: Servidor intermediario de acceso a base de datos. Este tipo de driver proporciona una abstracción de la conexión. El cliente se conecta a los SGBD mediante un componente servidor intermedio, que actúa como una puerta para múltiples servidores. La ventaja de este tipo de driver es el nivel de abstracción. El servidor de aplicaciones WebLogic incorpora este tipo de driver. ■ Tipo 4: Drivers Java. Este es el más directo. La llamada JDBC se traduce directamente en una llamada de red a la base de datos, sin intermediarios. Proporcionan mejor rendimiento. La mayoría de SGBD proporcionan drivers de este tipo.
  • 7. Conexión a la BD Una vez cargado el driver apropiado para nuestro SGBD deberemos establecer la conexión con la BD. Para ello utilizaremos el siguiente método: La conexión a la BD está encapsulada en un objeto Connection. Para su creación debemos proporcionar la url de la BD y, si la BD está protegida con contraseña, el login y password para acceder a ella. El formato de la url variará según el driver que utilicemos. Sin embargo, todas las url tendrán la siguiente forma general: jdbc:<subprotocolo>:<nombre>, con subprotocolo indicando el tipo de SGBD y con nombre indicando el nombre de la BD y aportando información adicional para la conexión. 1 2 Connection con = DriverManager.getConnection(url); Connection con = DriverManager.getConnection(url, login, password);
  • 8. 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.
  • 9. 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.
  • 10. 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 { lass.forName("com.mysql.jdbc.Driver").newInstance conn = DriverManager.getConnection(url,login,password); if (conn != null) { System.out.println("Conexiónse de datos "+url+" ... Ok"); conn.close(); } } catch(SQLException ex) { System.out.println(ex); } catch(ClassNotFoundException ex) { System.out.println(ex); } } }
  • 11. Objeto Statement Se usa para enviar sentencias SQL a la base de datos. Actualmente hay tres tipos de objetos Statement, todos los cuales actúan como contenedores para la ejecución de sentencias en una conexión dada: Statement, PreparedStatement que hereda de Statement y CallableStatement que hereda de PreparedStatement. Estas estàn especializadas para enviar tipos particulares de sentencias SQL, Un objeto Statement se usa para ejecutar una sentencia SQL simple sin parámetros. Un objeto PreparedStatement se usa para ejecutar sentencias SQL precompiladas con o sin parámetros IN; y un objeto CallableStatement se usa para ejecutar un procedimieno de base de datos almacenado. La interfase Statement suminstra métodos básicos para ejecutar sentencias y devolver resultados. La interfase PreparedStatement añade métodos para trabajat con los parámetros IN; y la interfase CallableStatement añade métodos para trabajar con parameters OUT.
  • 12. Creación de objetos Statement Una vez establecida la conexión con una base de datos particular, esta conexión puede usarse para enviar sentencias SQL. Un objeto Statement se crea mediante el método de Connection createStatement, como podemos ver en el siguiente fragmento de código. Connection con = DriverManager.getConnection(url, "sunny", ""); Statement stmt = con.createStatement(); La sentencia SQL que será enviada a la base de datos es alimentada como un argumento a uno de los métodos de ejecución del objeto Statement. Por ejemplo: ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table2"); Ejecución de sentencias usando objetos Statement. La interfase Statement nos suministra tres métodos diferentes para ejecutar sentencias SQL, executeQuery, executeUpdate y execute. El método a usar esta determinado por el producto de la sentencia SQL.
  • 13. Objeto Resultset Es la representación en memoria de las tablas de la base de datos en disco, se puede entender como una tabla virtual, recordar que generalmente todos los procesos que se realizen con la tabla (insertar registros, eliminar registros, etc) se realizaran realmente contra un resulset y no provocaran ningun cambio en la tabla fisica en disco, resulset tiene un conjunto de metodos muy utiles y muy usados para el proceso de los renglones de la tabla virtual. Ejemplo: // declarando y creando objetos globales Connection canal = null; ResultSet tabla= null; Statement instruccion=null; String strcon = "jdbc:mysql://localhost/mibase?user=lauro&password=laurosoto"; // abriendo canal o enlace en su propio try-catch try { Class.forName("com.mysql.jdbc.Driver").newInstance(); canal=DriverManager.getConnection(strcon); instruccion = canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); } catch(java.lang.ClassNotFoundException e){} catch(SQLException e) {};