95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

48
3 Presenta Presenta Presenta Presenta: JAVIER ALEJANDRO SANTOS H. CATEDRÁTICO: CATEDRÁTICO: CATEDRÁTICO: CATEDRÁTICO: ISC. VIOLETA GPE. CLEMENTE ARCE MATERIA: MATERIA: MATERIA: MATERIA: TALLER DE BASE DE DATOS PROYECTO PROYECTO PROYECTO PROYECTO: UNIDAD III: TECNOLOGÍAS DE CONECTIVIDAD A BASE DE DATOS (INVESTIGACION) CARRERA: CARRERA: CARRERA: CARRERA: LIC. EN INFORMÁTICA SEMESTRE: SEMESTRE: SEMESTRE: SEMESTRE: 6º “F” FECHA: FECHA: FECHA: FECHA: 24/05/2012 CINTALAPA DE FIGUEROA, CHIAPAS. CINTALAPA DE FIGUEROA, CHIAPAS. CINTALAPA DE FIGUEROA, CHIAPAS. CINTALAPA DE FIGUEROA, CHIAPAS. INSTITUTO TECNOLÓGICO SUPERIOR DE CINTALAPA

Transcript of 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

Page 1: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

3

PresentaPresentaPresentaPresenta::::

JAVIER ALEJANDRO SANTOS H.

CATEDRÁTICO:CATEDRÁTICO:CATEDRÁTICO:CATEDRÁTICO:

ISC. VIOLETA GPE. CLEMENTE ARCE

MATERIA:MATERIA:MATERIA:MATERIA:

TALLER DE BASE DE DATOS

PROYECTOPROYECTOPROYECTOPROYECTO::::

UNIDAD III:

TECNOLOGÍAS DE CONECTIVIDAD A BASE DE DATOS

(INVESTIGACION)

CARRERA:CARRERA:CARRERA:CARRERA:

LIC. EN INFORMÁTICA

SEMESTRE: SEMESTRE: SEMESTRE: SEMESTRE:

6º “F”

FECHA:FECHA:FECHA:FECHA:

24/05/2012

CINTALAPA DE FIGUEROA, CHIAPAS.CINTALAPA DE FIGUEROA, CHIAPAS.CINTALAPA DE FIGUEROA, CHIAPAS.CINTALAPA DE FIGUEROA, CHIAPAS.

INSTITUTO TECNOLÓGICO

SUPERIOR DE CINTALAPA

Page 2: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

4

Índice

PAGINA

INTRODUCCIÓN 5

SÍNTESIS 7

UNIDAD III: TECNOLOGÍAS DE CONECTIVIDAD A BASES DE DATOS. 9

3.1 ODBC. 9

3.1.1 TERMINOLOGÍA Y CONCEPTOS 9

3.1.2 ADMINISTRADOR DE ORÍGENES DE DATOS ODBC. 10

3.1.3 INSTALACIÓN Y CONFIGURACIÓN DEL DRIVER ACORDE AL 12

3.2 ADO.NET. 14

3.2.1 TERMINOLOGÍA Y CONCEPTOS 14

3.2.2 COMPONENTES DISPONIBLES. 14

3.2.2.1 CONNECTION. 17

3.2.2.2 COMMAND 19

3.2.2.3 RECORDSOURCE. 20

3.2.2.4 ERROR. 21

3.2.3 PROTOTIPO DE APLICACIONES CON CONECTIVIDAD A BASES DE DATOS. 23

3.3 JDBC 29

3.3.1 TERMINOLOGÍA Y CONCEPTOS. 29

3.3.2 SQL Y JDBC. 30

3.3.2.1 JERARQUÍA DE CLASES JAVA.SQL 31

3.3.2.2 INTERFACE JAVA.SQL.CONNECTION. 34

3.3.2.3 INTERFACE JAVA.SQL.STATEMENT 36

3.3.2.4 INTERFACE JAVA.SQL.RESULTSET 37

3.3.2.5 JERARQUÍA DE CLASES JAVAX.SQL 38

3.3.3 INSTALACIÓN Y CONFIGURACIÓN DEL DRIVER ACORDE AL GESTOR DE BASE DE DATOS

39

3.3.4 PROTOTIPO DE APLICACIONES CON CONECTIVIDAD A BASES DE DATOS. 42

ANEXOS 45

REFERENCIAS BIBLIOGRÁFICAS 50

Page 3: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

5

Introducción

Una base de datos es una colección de datos organizados y estructurados según un determinado modelo de información que refleja no sólo los datos en sí mismos, sino también las relaciones que existen entre ellos. Una base de datos se diseña con un propósito específico y debe ser organizada con una lógica coherente. Los datos podrán ser compartidos por distintos usuarios y aplicaciones, pero deben conservar su integridad y seguridad al margen de las interacciones de ambos. La definición y descripción de los datos han de ser únicas para minimizar la redundancia y maximizar la independencia en su utilización. En una base de datos, las entidades y atributos del mundo real, se convierten en registros y campos. Estas entidades pueden ser tanto objetos materiales como libros o fotografías, pero también personas e, incluso, conceptos e ideas abstractas. Las entidades poseen atributos y mantienen relaciones entre ellas.

Hoy también destaca la utilización de bases de datos distribuidas ya que cada vez es más corriente el uso de arquitecturas de cliente-servidor y trabajo en grupo. Los principales problemas que se generan por el uso de la tecnología de bases de datos distribuidas se refieren a la duplicidad de datos y a su integridad al momento de realizar actualizaciones a los mismos. Además, el control de la información puede constituir una desventaja, debido a que se encuentra diseminada en diferentes localizaciones geográficas. El esquema de la base de datos está representado por un conjunto de clases que definen las características y el comportamiento de los objetos que conformarán la base de datos. La diferencia principal respecto a los modelos anteriores es la no positividad de los datos. Esto es, con una base de datos tradicional, las operaciones que se tienen que efectuar en los datos se les piden a las aplicaciones que los usan. Con una base de datos orientada a objetos sucede lo contrario, los objetos memorizados en la base de datos contienen tanto los datos como las operaciones posibles con tales datos. En cierto sentido, se podrá pensar en los objetos como en datos a los que se les ha dotado de cierta inteligencia que les permite saber cómo comportarse, sin tener que apoyarse en aplicaciones externas

Page 4: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

6

Síntesis 3.1 ODBC

ODBC es un estándar de acceso a bases de datos desarrollado por sql access

group en 1992, el objetivo de odbc es hacer posible el acceder a cualquier dato

desde cualquier aplicación, sin importar qué sistema de gestión de bases de

datos. Su origen de datos está formado por la procedencia de los datos y la

información de conexión necesaria para tener acceso a los mismos, al instalar

este driver sirve para que desde un sistema microsoft windows se pueda acceder

a una base de datos mysql.

También las aplicaciones son variadas, por ejemplo podemos utilizarlo para crear

un dsn asociado a una base de datos mysql, de modo que nuestras páginas asp

podrían acceder a dicha base de datos.ado.net es un conjunto de clases que

exponen servicios de acceso a datos para programadores de .net

framework.ado.net ofrece abundancia de componentes para la creación de

aplicaciones de uso compartido de datos distribuidas.Constituye una parte integral

de .net framework y proporciona acceso a datos relacionales, xml y de

aplicaciones.

El software funciona de dos modos, con un software manejador en el cliente, o

una filosofía cliente-servidor. En el primer modo, el driver interpreta las conexiones

y llamadas SQL y las traduce desde el API ODBC hacia el DBMS. En el segundo

modo para conectarse a la base de datos se crea una DSN dentro del ODBC que

define los parámetros, ruta y características de la conexión según los datos que

solicite el creador o fabricante.

Page 5: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

7

Síntesis 3.2 ADO.NET

ADO.NET satisface diversas necesidades de desarrollo, como la creación de

clientes de base de datos front-end y objetos empresariales de nivel medio que

utilizan aplicaciones, herramientas, lenguajes o exploradores de Internet.

Existen dos componentes de ADO.NET que se pueden utilizar para obtener

acceso a datos y manipularlos:

• Proveedores de datos de .NET Framework

• El DataSet

• Proveedores de datos de .NET Framework

Los proveedores de datos de .NET Framework son componentes diseñados

explícitamente para la manipulación de datos y el acceso rápido a datos de sólo

lectura y sólo avance.DataSet el DataSet de ADO.NET está expresamente

diseñado para el acceso a datos independientemente del origen de datos.

El DataSet de ADO.NET está expresamente diseñado para el acceso a datos

independientemente del origen de datos. Como resultado, se puede utilizar con

múltiples y distintos orígenes de datos, con datos XML o para administrar datos

locales de la aplicación. El DataSetcontiene una colección de uno o más

objetos DataTable formados por filas y columnas de datos, así como información

sobre claves principales, claves externas, restricciones y relaciones relativa a los

datos incluidos en los objetos DataTable.

Si no necesita la funcionalidad proporcionada por el DataSet, puede mejorar el

rendimiento de su aplicación si utiliza elDataReader para devolver sus datos de

sólo avance y de sólo lectura. Aunque el DataAdapter utiliza el DataReader para

rellenar el contenido de un DataSet , al utilizar el DataReader puede mejorar el

rendimiento porque no usará la memoria que utilizaría el DataSet, además de

evitar el procesamiento necesario para crear y rellenar el contenido de DataSet.

Page 6: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

8

Síntesis 3.3 JDBC

JDBC, es una API que permite la ejecución de operaciones sobre bases de datos desde el lenguaje de programación Java, independientemente del sistema operativo donde se ejecute o de la base de datos a la cual se accede, utilizando el dialecto SQL del modelo de base de datos que se utilice.

El Lenguaje de consulta estructurado es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones sobre las mismas. Una de sus características es el manejo del álgebra y el cálculo relacional permitiendo lanzar consultas con el fin de recuperar información de interés de una base de datos, de una forma sencilla. Es un lenguaje de cuarta generación. Es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los sistemas relacionales permitiendo gran variedad de operaciones sobre los mismos. SQL El Lenguaje de consulta estructurado es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones sobre las mismas. Una de sus características es el manejo del álgebra y el cálculo relacional permitiendo lanzar consultas con el fin de recuperar información de interés de una base de datos, de una forma sencilla.

Page 7: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

9

UNIDAD III TECNOLOGÍAS DE CONECTIVIDAD A BASES DE DATOS.

3.1 ODBC

Terminología y Conceptos

Open DataBaseConnectivity (ODBC) es un estándar de acceso a bases de

datos desarrollado por SQL Access Group en 1992, el objetivo de ODBC es hacer

posible el acceder a cualquier dato desde cualquier aplicación, sin importar

qué sistema de gestión de bases de datos (DBMS) almacene los datos, ODBC

logra esto al insertar una capa intermedia (CLI) denominada nivel de Interfaz de

Cliente SQL, entre la aplicación y el DBMS, el propósito de esta capa es traducir

las consultas de datos de la aplicación en comandos que el DBMS entienda. Para

que esto funcione tanto la aplicación como el DBMS deben ser compatibles con

ODBC, esto es que la aplicación debe ser capaz de producir comandos ODBC y el

DBMS debe ser capaz de responder a ellos. Desde la versión 2.0 el estándar

soporta SAG ySQL.

El software funciona de dos modos, con un software manejador en el cliente, o

una filosofía cliente-servidor. En el primer modo, el driver interpreta las conexiones

y llamadas SQL y las traduce desde el API ODBC hacia el DBMS. En el segundo

modo para conectarse a la base de datos se crea una DSN dentro del ODBC que

define los parámetros, ruta y características de la conexión según los datos que

solicite el creador o fabricante.

Java DatabaseConnectivity (JDBC) es un derivado inspirado en el mismo,

una interfaz de programación de aplicaciones que permite la ejecución de

operaciones sobre bases de datos desde el lenguaje de programación

Java independientemente del sistema operativo donde se ejecute o de la base de

datos a la cual se accede utilizando el dialecto SQL del modelo de base de datos

que se utilice.

Page 8: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

10

3.1.2 Administrador Origenes de datos Odbc

Orígenes de datos ODBC: ¿Qué es un origen de datos?

A un origen de datos ODBC (origen de datos ODBC: datos e información

necesaria para tener acceso a esos datos desde programas y bases de datos que

admitan el protocolo ODBC (conectividad abierta de bases de datos).), por

ejemplo, una base de datos y el servidor donde reside, se tiene acceso a través de

un controlador de Conectividad abierta de base de datos (ODBC (Conectividad

abierta de bases de datos): método estándar para compartir datos entre bases de

datos y programas. Los controladores ODBC utilizan SQL (Lenguaje de consulta

estructurado) para obtener acceso a datos externos.) (ODBC).

Un origen de datos está formado por la procedencia de los datos y la información

de conexión necesaria para tener acceso a los mismos. Ejemplos de orígenes de

datos son Microsoft Access, Microsoft SQL Server, Oracle RDBMS, una hoja de

cálculo y un archivo de texto. Ejemplos de información de conexión son la

ubicación del servidor, el nombre de la base de datos, el Id. de inicio de sesión, la

contraseña y diversas opciones de controlador ODBC que describen cómo

conectarse al origen de datos.

En la arquitectura ODBC, una aplicación (como Access o un programa de

Microsoft Visual Basic) se conecta al Administrador de controladores ODBC que, a

su vez, utiliza un controlador ODBC específico (por ejemplo, el controlador ODBC

de Microsoft SQL) para conectarse a un origen de datos (en este caso, una base

de datos de Microsoft SQL Server (base de datos SQL: base de datos basada en

el lenguaje SQL, lenguaje de consulta estructurado.)). En Access, los orígenes de

datos ODBC se utilizan para conectarse a orígenes de datos externos a Access

que no tienen controladores integrados.

Para conectarse a estos orígenes de datos, siga el procedimiento que se indica a

continuación:

Page 9: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

11

• Instale el controlador ODBC apropiado en el equipo que contenga el origen de

datos.

• Defina un nombre de origen de datos (DSN) utilizando el Administrador de

orígenes de datos ODBC para almacenar la información de conexión en el

Registro de Microsoft Windows o en un archivo DSN, o bien una cadena de

conexión en código de Visual Basic para pasar la información de conexión

directamente al Administrador de controladores ODBC.

Orígenes de datos de archivos

Los orígenes de datos de archivos (también denominados archivos DSN)

almacenan información de conexión en un archivo de texto, no en el Registro de

Windows, y, generalmente, se pueden utilizar con mayor flexibilidad que los

orígenes de datos de equipos. Por ejemplo, se puede copiarun origen de datos de

archivo a cualquier equipo con el controlador ODBC correcto para que su

aplicación pueda basarse en información de conexión coherente y precisa para

todos los equipos utilizados. También se puede colocar el origen de datos de

archivo en un único servidor, compartirlo entre varios equipos en la red, y

mantener fácilmente la información de conexión en una ubicación.

También es posible que un origen de datos no se pueda compartir. Un origen de

datos de archivo que no se puede compartir reside en un único equipo y apunta a

un origen de datos de equipo. Es posible utilizar orígenes de datos de archivos

que no se pueden compartir para obtener acceso a orígenes de datos de equipos

existentes desde orígenes de datos de archivos.

Cadenas de conexión

Si es programador, puede definir una cadena de conexión con formato en su

código de Microsoft Visual Basic que especifique la información de conexión. La

utilización de una cadena de conexión evita la definición de un equipo o un archivo

Page 10: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

12

DSN y pasa la información de conexión directamente al Administrador de

controladores ODBC. Esto es útil, por ejemplo, cuando se desea evitar que los

administradores de sistemas o los usuarios tengan que crear primero un DSN, o

para simplificar la instalación de su aplicación. Para mantener la seguridad de la

información de cadena de conexión de su código, ayude a proteger el código

creando un archivo MDE o mediante una contraseña.

• Nota de seguridad Utilice contraseñas fuertes que combinen letras en mayúsculas

y minúsculas, números y símbolos. Las contraseñas débiles son aquellas que no

mezclan dichos elementos. Un ejemplo de contraseña fuerte sería Y6dh!et5, y de

débil, Casa27. Utilice una contraseña fuerte que pueda recordar para no tener que

anotarla en ningún sitio.

3.1.3 InstalaciónConfiguración Driver acorde al gestor de bases de datos

Instalar este driver sirve para que desde un sistema Microsoft Windows se pueda

acceder a una base de datos MySQL. Las aplicaciones son variadas, por ejemplo

podemos utilizarlo para crear un DSN asociado a una base de datos MySQL, de

modo que nuestras páginas ASP podrían acceder a dicha base de datos. Otra

aplicación es acceder desde Access a la base de datos MySQL y exportar o

importar datos (migrar los datos desde Access a MySQL y desde MySQL a

Access), incluso para crear un back-end de nuestra base MySQL en interfaz

Access.

Primero hay que descargar la última versión de Myodbc de la página de Mysql:

http://www.mysql.com/products/connector/odbc/

Page 11: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

13

Cuando ya tenemos todo, instalamos la actualización de Microsoft Jet, y

descomprimimos e instalamos el driver OBDC de Mysql. Cuando pregunta en la

pantalla de “Data Sources” haz clic en “Close” para terminar.

Una vez se ha instalado el driver ODBC, accede al panel de control de OBDC de

32 Bits (Botón Inicio-> Configuración-> Panel de control-> Fuentes de datos ODBC

32 bits).

En este punto, tendrás que elegir si quieres utilizar el driver para un solo usuario

(DSN de usuario), o para cualquier usuario del ordenador (DSN de Sistema). Una

vez hayas elegido uno, haz clic en el botón de “Agregar” para añadir una nueva

fuente de datos y a continuación, selecciona el driver de Mysql. Aparecerá la

siguiente pantalla:

En ella tendrás que rellenar los siguientes campos:

Page 12: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

14

Windows DSN name : Nombre de la fuente de datos que estará disponible desde

Windows.

Mysql host (nameor IP) : Nombre o dirección IP del ordenador donde se

encuentra instalado el servidor Mysql.

MysqlDatabaseName : Nombre de la base de datos con la que se trabajará desde

la fuente de datos

User : Nombre de usuario con el que se accederá al servidor de bases de datos.

Password : Contraseña del usuario.

Port : Sirve para especificar el puerto en el que se encuentra el servidor Mysql, hay

que poner un valor en caso de que no se esté utilizando el predeterminado, que es

el 3306.

Una vez están estas opciones configuradas, se puede hacer clic en "OK" para

cerrar las ventanas.

3.2 Ado.Net

3.2.1 Terminología y conceptos

ADO.NET es un conjunto de clases que exponen servicios de acceso a datos para

programadores de .NET Framework.ADO.NET ofrece abundancia de

componentes para la creación de aplicaciones de uso compartido de datos

distribuidas. Constituye una parte integral de .NET Framework y proporciona

acceso a datos relacionales, XML y de aplicaciones.

ADO.NET satisface diversas necesidades de desarrollo, como la creación de

clientes de base de datos front-end y objetos empresariales de nivel medio que

utilizan aplicaciones, herramientas, lenguajes o exploradores de Internet.

3.2.2 Componentes Disponibles

Existen dos componentes de ADO.NET que se pueden utilizar para obtener

acceso a datos y manipularlos:

Page 13: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

15

• Proveedores de datos de .NET Framework

• El DataSet

Proveedores de datos de .NET Framework

Los proveedores de datos de .NET Framework son componentes diseñados

explícitamente para la manipulación de datos y el acceso rápido a datos de sólo

lectura y sólo avance. El objeto Connection proporciona conectividad a un origen de

datos. El objeto Commandpermite tener acceso a comandos de base de datos para

devolver datos, modificar datos, ejecutar procedimientos almacenados y enviar o

recuperar información sobre parámetros. El objeto DataReader proporciona una

secuencia de datos de alto rendimiento desde el origen de datos. Por último, el

objeto DataAdapter proporciona el puente entre el objeto DataSet y el origen de

datos. El DataAdapter utiliza objetosCommand para ejecutar comandos SQL en el

origen de datos tanto para cargar el DataSet con datos como para reconciliar en el

origen de datos los cambios aplicados a los datos incluidos en el DataSet.

DataSet

El DataSet de ADO.NET está expresamente diseñado para el acceso a datos

independientemente del origen de datos. Como resultado, se puede utilizar con

múltiples y distintos orígenes de datos, con datos XML o para administrar datos

locales de la aplicación. El DataSetcontiene una colección de uno o más

objetos DataTable formados por filas y columnas de datos, así como información

sobre claves principales, claves externas, restricciones y relaciones relativa a los

datos incluidos en los objetos DataTable.

En el diagrama siguiente se ilustra la relación entre un proveedor de datos de

.NET Framework y un DataSet.

Page 14: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

16

Arquitectura de ADO.NET

Elegir un DataReader o un DataSet

A la hora de decidir si su aplicación debe utilizar un DataReader (vea Recuperar

datos mediante DataReader) o un DataSet (vea Utilizar DataSets en ADO.NET),

debe tener en cuenta el tipo de funcionalidad que su aplicación requiere. Use

unDataSet para hacer lo siguiente:

• Almacene datos en la memoria caché de la aplicación para poder manipularlos. Si

solamente necesita leer los resultados de una consulta, el DataReader es la mejor

elección.

• Utilizar datos de forma remota entre un nivel y otro o desde un servicio Web XML.

Page 15: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

17

• Interactuar con datos dinámicamente, por ejemplo para enlazar con un control de

formularios Windows Forms o para combinar y relacionar datos procedentes de

varios orígenes.

• Realizar procesamientos exhaustivos de datos sin necesidad de tener una

conexión abierta con el origen de datos, lo que libera la conexión para que la

utilicen otros clientes.

Si no necesita la funcionalidad proporcionada por el DataSet , puede mejorar el

rendimiento de su aplicación si utiliza elDataReader para devolver sus datos de

sólo avance y de sólo lectura. Aunque el DataAdapter utiliza el DataReader para

rellenar el contenido de un DataSet (vea Llenar un DataSet desde un

DataAdapter), al utilizar el DataReader puede mejorar el rendimiento porque no

usará la memoria que utilizaría el DataSet , además de evitar el procesamiento

necesario para crear y rellenar el contenido de DataSet .

3.2.2.1 Connection

En ADO.NET se utiliza un objeto de conexión para conectarse a una fuente de

datos específica. Paraconectarse a la versión de Microsoft SQL Server 7.0 o

posterior, utilice el objeto SqlConnection del. NET Framework para SQL

Server. Paraconectarse a unafuente de datos OLE DB, o Microsoft SQL Server

versión 6. X o una versión anterior utilizando el proveedor OLE DB para SQL

Server (SQLOLEDB), utilice el objeto OleDbConnection del. NET Framework

para OLE DB. .Paraconectarse a unafuente de datos ODBC, utilice el

objeto OdbcConnection del. NET Framework para ODBC.Paraconectarse a

unafuente de datos de Oracle, utilice el objeto OracleConnection del. NET

Framework para Oracle.

Page 16: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

18

Conectarse a SQL Server con ADO.NET

.NET Framework 1.1 . NET Framework 1.1

El Proveedor de Datos de Marco .NET para el Servidor SQL proporciona la

conectividad a Microsoft SQL la versión 7.0 de Servidor o la utilización posterior el

objeto de SqlConnection.

El Proveedor de Datos de Marco .NET para el Servidor SQL apoya un formato de

cuerda de conexión que es similar al OLE DB (LA ALHARACA) el formato de

cuerda de conexión. Para nombres válidos de formato de cadena y los valores,

vea la propiedad SqlConnection.ConnectionString

El ejemplo de código siguiente demuestra como crear y abrir una conexión a un

Servidor SQL (la versión 7.0 o posterior) de base de datos.

NwindConn As SqlConnection = New SqlConnection ("Data Source = localhost; Integrated Security

= SSPI;" & _

"Initial Catalog=northwind" ) "Catálogoinicial = Neptuno")

nwindConn.Open() nwindConn.Open ()

[C#] [C #]

SqlConnectionnwindConn = new SqlConnection( "Data Source=localhost; Integrated

Security=SSPI;" + SqlConnectionnwindConn = new SqlConnection ("Data Source = localhost;

Integrated Security = SSPI;" +

"Initial Catalog=northwind" ); "Catálogoinicial = Neptuno");

nwindConn.Open(); nwindConn.Open ();

Cierre de la conexión Se recomienda que siempre cierre la conexión cuando haya terminado de usarlo,

para que la conexión sea devuelta al fondo.Esto se puede hacer utilizando los

métodos finales odisponer de los métodos del objeto de Conexión. Las conexiones

que explícitamente no están cerradas no podrían ser añadidas o devueltas al

fondo. Por ejemplo, una conexión que ha salido del alcance, pero esto

Page 17: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

19

explícitamente no ha estado cerrada sólo será devuelto al fondo de conexión si el

tamaño de fondo máximo ha sido alcanzado y la conexión es todavía válida.

3.2.2.2 Command

El objeto de command en ADO.NET ejecuta sentencias SQL y procedimientos

almacenados en el origen de datos especificado en la conexión de objetos. El

objeto de command requiere una instancia de un objeto de conexión para la

ejecución de las sentencias SQL. Es decir para recuperar datos o ejecutar una

declaración SQL contra una Fuente de Datos, usted tiene que crear un Objeto de

Conexión y abrir una conexión a la Fuente de Datos, y asignar la conexión abierta

a la propiedad de conexión del Objeto de command. Cuando el objeto de

command retorna un conjunto de resultados, un lector de datos se utiliza para

recuperar el conjunto el de resultados.

Page 18: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

20

El objeto de command tiene una propiedad llamada CommandText, que contiene

un valor de cadena que representa el command que se ejecutará en el origen de

datos. Cuando la propiedad CommandType es puesta a StoredProcedure, la

propiedad CommandText debería ser puesta al nombre del procedimiento

almacenado.

3.2.2.3 RecordSource

Se creará un Recordset con el resultado de una consulta SQL realizada a una

base de datos, posteriormente se procesarán los datos que ha producido dicha

consulta.

Por ejemplo si tenemos una base de datos con nuestra colección discográfica,

podríamos hacer una consulta con todos los CD's de Phil Collins

Suponiendo que el formato de los discos (CD, LP, etc.) es Formato y el Nombre

del Autor está en Cantante, la orden a ejecutar sería:

SQLTmp = "SELECT * FROMmis_discosWHEREFormato Like '*CD*' AND Cantante Like

'*Phil Collins*'"

Por supuesto se puede usar = en lugar de Like, si estamos seguros de que no

necesitamos los comodines, ya que la consulta es "bastante" más rápida. Es decir

quedaría así:

SQLTmp = "SELECT * FROMmis_discosWHERE Formato = 'CD' AND Cantante = 'Phil

Collins'"

'Ejecutar orden SQL con los datos solicitados

'Db será una base de datos:

'DimDb As Database 'Variable para las Bases de Dato s

'Set Db = OpenDatabase("Nombre_Base_Datos")

Page 19: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

21

DimSQLTmp As String

DimMySnap As Recordset

SQLTmp = "select * from " &Nombre_Tabla& " <Consult a> " & " orderby " &

Clasificar

Set MySnap = Db.OpenRecordset(SQLTmp, dbOpenSnapsho t)

Err = 0

MySnap.MoveFirst

IfErrThen

Err = 0

'no hay datos, avisar

MsgBox "No hay datos que coincidan con la búsqueda especificada,"

&vbCrLf& "(o no está bien realizada)", 64, "Listado s"

Exit Sub

EndIf

'Añadir el resultado a un List

List1.Clear

MySnap.MoveFirst

Do UntilMySnap.EOF

'Procesar los datos...

'

List1.AddItem MySnap("Cantante") & " " &MySnap("[Ca nción]") '...y

demásdatos

MySnap.MoveNext

Loop

MySnap.Close

3.2.2.4 Error

Los errores de base de datos, también llamados "errores del motor", ocurren

cuando se dan errores en tiempo de ejecución en los registros del código de

Page 20: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

22

eventos. Por ejemplo, un error de base de datos ocurre cuando el usuario intenta

almacenar un valor nulo en un campo que no admite valores nulos.

Cuando ocurre un error de base de datos, el motor de base de datos subyacente

que detecta el error envía normalmente un mensaje de error. Sin embargo, la

naturaleza exacta del mensaje de error depende de la base de datos a la que se

tenga acceso, por ejemplo, los mensajes de error producidos por un servidor de

base de datos remoto (como Microsoft SQL Server) probablemente serán distintos

de los que se producen si ocurre un error en una tabla local de Visual FoxPro.

Además, los errores del motor son a veces muy genéricos, porque el motor de

base de datos no tiene información sobre el contexto en el que se actualiza un

registro. Como consecuencia, los mensajes de error producidos por un motor de

base de datos suelen ser menos útiles para el usuario de una aplicación de Visual

FoxPro.

Para controlar errores de base de datos de forma más específica para la

aplicación, puede crear desencadenadores con el comando CREATETRIGGER. El

desencadenador se llama cuando se intenta la actualización de un registro

(eliminar, insertar o actualizar). El código de desencadenador personalizado puede

buscar entonces condiciones de error específicas de la aplicación e informar de

ellas.

Si controla errores de base de datos mediante desencadenadores, debería activar

el búfer. De esta forma, cuando se actualiza un registro, se llama al

desencadenador pero el registro no se envía automáticamente a la base de datos

subyacente. Así evita la posibilidad de producir dos mensajes de error: uno del

desencadenador y otro del motor de base de datos subyacente.

Para crear mensajes de error personalizados mediant e desencadenadores

1. Dentro de una función definida por el usuario o un procedimiento almacenado,

escriba su propio texto de mensaje.

Page 21: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

23

2. Habilite el búfer con la función CURSORSETPROP( ) para mostrar su texto

personalizado. Si el búfer está desactivado, el usuario verá tanto su texto

personalizado como el mensaje de error del motor.

Evitar el error al asignar un campo Null de una base de datos.

Además de evitar el error, es más rápido que usar If...Then... para

comprobar si el campo es nulo o está vacío.

Para cadenas:

Cadena = "" &rs!Campo

Para números:

'Numero = 0 &rs!Campo

Numero = CInt ("0" &rs!Campo)

3.2.3 Prototipo Aplicaciones conectividad Bases de Datos

Ejemplo de uso de ADO desde Visual Basic

En este ejemplo se asume un Formulario con un DataGrid. Se usará la base de datos "Neptuno.mdb" que viene en las instalaciones en español de Microsoft Office y de Visual Basic.

Referencia a ADO

Para poder usar ADO desde Visual Basic, lo primero que debemos hacer es referenciar el componente ADO. Esto se hace por el menú "Proyecto\Referencias" y en la ventana que sale, seleccionamos ADO, que en la lista se verá como

Microsoft ActiveX Data Objects X.XX Library

En donde X.XX representa la versión de ADO que queremos usar, que puede ir desde la 1.5 hasta la 2.8. DFA Nota: Un computador pudiera tener instalada una o

Page 22: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

24

más versiones simultáneamente y debemos elegir una de ellas. Las versiones más recientes tienen más funcionalidades y tienen menos errores que las antiguas.

La conexión con la base de datos dada

Para trabajar con una base de datos, primero debemos establecer una conexión con ésta.

En el Formulario, declaramos el objeto MiConexión, que nos permitirá la conexión con la base de datos

' declaro el objeto MiConexion como una variable de módulo.

' Cuando se instancie será la conexión con la base de datos

DimMiConexion AsADODB.Connection

En este momento, el objeto MiConexion solo está declarado, pero todavía no existe porque no ha sido instanciado.

En el evento Form_Load, instanciamos el objeto MiConexion, y establecemos la conexión con la base de datos para poder comunicarnos con ella.

Private Sub Form_Load ()

' Instancio la conexión (ahora la conexión existe)

Set MiConexión = NewADODB.Connection

With MiConexión

' Cursor en Cliente para poder usar un DataGrid

. CursorLocation = adUseClient

' Abro la conexión con la base de datos Neptuno.mdb usando su DSN

. Open "DSN=Neptuno"

End With

End Sub

Ya tengo la conexión instanciada y ya me he conectado con la base de datos. La autopista está abierta y funcionando.

Ahora puedo hacer cosas con la información que contiene la base de datos. Puedo leerla, escribirla, borrarla, modificarla, etc. También puedo manipular la propia base de datos. Puedo crear tablas, modificarlas, puedo crear usuarios, etc.

Leo información de la base de datos

Ahora que tenemos la conexión establecida con la base de datos, queremos leer información de ésta y mostrarla en la pantalla.

Page 23: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

25

Especificamos la información que queremos

Primero, debemos especificarle, a la base de datos, qué información queremos. Esto se hace mediante una sentencia SQL.

Por ejemplo. Queremos el ID y el Nombre del producto para todos los productos cuyo Nombre contenga la palabra "Queso".

Esta es la sentencia SQL que necesitamos

SELECTIdProducto, NombreProducto

FROM Productos

WHERENombreProducto LIKE '%Queso%'

La sentencia SQL de arriba significa lo siguiente:

Indicamos, a la base de datos, que nos devuelva dos campos,

IdProducto y NombreProducto

SELECTIdProducto, NombreProducto

Indicamos en qué Tabla, de la base de datos,

están los campos previamente señalados

Están en la Tabla Productos

FROM Productos

Indicamos una condición.

Queremos solo los registros en cuyo nombre esté la palabra "Queso"

WHERENombreProducto LIKE '%Queso%'

En Visual basic, creamos una variable de string a la que llamaremos "SQL". Podríamos llamarla como querramos, podríamos llamarla "Aguacate", Visual Basic lo manejaría sin problemas, pero es mejor darle un nombre que tenga sentido para nosotros y que corresponda con el uso que se le va a dar.

DimSQL As String

A esa variable le asignamos un texto que será la orden que le vamos a enviar a la base de datos. Este texto es la sentencia SQL que acabamos de crear arriba.

SQL = "SELECTIdProducto, NombreProducto" & vbCrLf & _

"FROM Productos" & vbCrLf & _

"WHERENombreProductoLIKE '%Queso%'"

Page 24: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

26

Ya tenemos especificado la orden que le vamos a enviar a la base de datos para que nos devuelva los registros con la información que queremos. Ahora debemos crear un Recordset, que es el objeto de ADO donde se recibirá la información proveniente de la base de datos.

Usamos un Recordset para recibir la información des de la base de datos

Declaramos el objeto Recordset que recibirá la información de la base de datos

Dimrs AsADODB.Recordset

La variable "rs" recibirá los datos provenientes de la base de datos.

Ahora usamos la conexión para enviar la orden a la base de datos para que nos devuelva la información.

Set rs = MiConexion.Execute ( SQL)

Cuando se ejecuta la sentencia previa, la conexión "MiConexion", ejecuta la orden contenida en la variable "SQL". Esto significa que la orden es enviada a la base de datos y ésta responde devolviendo la información requerida. "MiConexion" lee esa información proveniente de la base de datos, y la convierte en un Recordset, el cual es asignado al objeto "rs".

Ahora el Recordset "rs" tiene la información que llegó desde la base de datos, lista para ser usada. Allí tenemos, todos los registros de la Tabla "Productos" que cumplan con la condición de que en el campo "NombreProducto" contenga la palabra "queso". En el Recordset solo se encuentran los campos que especificamos, "IdProducto" y "NombreProducto".

Mostramos la información que contiene el Recordset en un DataGrid

En el Recordset "rs" tenemos la información. Esta información es usable de muchas maneras, ya que con el Recordset tal y como está podemos recorrer esa información y manipularla, añadir registros, borrarlos, etc.

Sin embargo, en este ejemplo, queremos mostrarla en un DataGrid.

Para ello, solo tenemos que asignar el Recordset a la propiedad DataSource del DataGrid. Una vez hecho esto, el DataGrid mostrará el contenido del recordset.

Set DataGrid1.DataSource = rs

Page 25: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

27

Código completo del programa

Nota: Para que el programa funcione solo hay que añadir un control DataGrid al Formulario y una referencia a Microsoft ActiveX Data ObjectsX.XX Library.

OptionExplicit

' ------------------------------------------------- ---------

' Declaro el objeto MiConexion como una variable de módulo.

' Cuando se instancie será la conexión con la base de datos.

' ------------------------------------------------- ---------

DimMiConexion AsADODB.Connection

' ------------------------------------------------- ---------

' Al cargarse el Formulario hago el trabajo.

' (Aquí, a lo sumo, solo debería establecerse la co nexión con la base de

datos,

' y las demás cosas se deberían hacer en otro lado ,

' pero este es solo un ejemplo sencillo)

' ------------------------------------------------- ---------

Private Sub Form_Load ()

' ------------------------------------------------- ---------

' Instancio la conexión y me conecto con la base de datos

' ------------------------------------------------- ---------

Set MiConexion = NewADODB.Connection

With MiConexion

' Cursor en Cliente para poder usar un DataGrid

. CursorLocation = adUseClient

' Abro la conexión con la base de datos usando un D SN

. Open "DSN=Neptuno"

End With

' ------------------------------------------------- ---------

' Especifico qué información quiero de la base de d atos

' ------------------------------------------------- ---------

DimSQLAs String

SQL = "SELECT IdProducto, NombreProducto" & vbCrLf & _

"From Productos" & vbCrLf & _

"WHERENombreProductoLIKE '%Queso%'"

' ------------------------------------------------- ---------

' Cargo el recordset con la información proveniente de la base de datos

Page 26: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

28

' ------------------------------------------------- ---------

Dimrs AsADODB.Recordset

Set rs = MiConexion.Execute ( SQL)

' ------------------------------------------------- ---------

' Muestro la información en el DataGrid

' ------------------------------------------------- ---------

Set DataGrid1.DataSource = rs

End Sub

Imagen del programa Se muestran los artículos de la Tabla Productos cuyos nombres contengan la palabra "queso".

Page 27: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

29

3.3JDBC

3.3.1 Terminología y conceptos

Java DatabaseConnectivity, más conocida por sus siglas JDBC , es una API que

permite la ejecución de operaciones sobre bases de datos desde el lenguaje de

programación Java, independientemente del sistema operativo donde se ejecute o

de la base de datos a la cual se accede, utilizando el dialecto SQL del modelo de

base de datos que se utilice. El API JDBC se presenta como una colección

de interfaces Java y métodos de gestión de manejadores de conexión hacia cada

modelo específico de base de datos. Un manejador de conexiones hacia un

modelo de base de datos en particular es un conjunto de clases queimplementan

las interfaces Java y que utilizan los métodos de registro para declarar los tipos de

localizadores a base de datos (URL) que pueden manejar. 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 con cualquier tipo de tareas

con la base de datos a las que tenga permiso: consulta, actualización, creación,

modificación y borrado de tablas, ejecución de procedimientos almacenados en la

base de datos, etc.

Paquete java.sql

JDBC ofrece el paquete java.sql, en el que existen clases muy útiles para trabajar

con bases de datos.

Clase Descripción

DriverManager Para cargar un driver

Connection Para establecer conexiones con las bases de datos

Statement Para crear consultas SQL y enviarlas a las BBDD

Page 28: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

30

ResultSet Para almacenar el resultado de la consulta

3.3.2 Sql y Jdbc

SQL

El Lenguaje de consulta estructurado (SQL [/esecuele/ en español, /sicuèl/ en

inglés] StructuredQueryLanguage ) es un lenguaje declarativo de acceso a bases

de datos relacionales que permite especificar diversos tipos de operaciones sobre

las mismas. Una de sus características es el manejo del álgebra y el cálculo

relacional permitiendo lanzar consultas con el fin de recuperar información de

interés de una base de datos, de una forma sencilla. Es un lenguaje de cuarta

generación (4GL).

El SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y

potencia de los sistemas relacionales permitiendo gran variedad de operaciones

sobre los mismos. Es un lenguaje declarativo de alto nivel o de no procedimiento,

que gracias a su fuerte base teórica y su orientación al manejo de conjuntos de

registros, y no a registros individuales, permite una alta productividad en

codificación. De esta forma una sola sentencia puede equivaler a uno o más

programas que utilizasen un lenguaje de bajo nivel orientado a registro.

JDBC

Es el acrónimo de Java DatabaseConnectivity, un API que permite la ejecución de

Page 29: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

31

operaciones sobre bases de datos desde el lenguaje de programación Java

independientemente del sistema de operación donde se ejecute o de la base de

datos a la cual se accede utilizando el dialecto SQL del modelo de base de datos

que se utilice.

El API JDBC se presenta como una colección de interfaces Java y métodos de

gestión de manejadores de conexión hacia cada modelo específico de base de

datos. Un manejador de conexiones hacia un modelo de base de datos en

particular es un conjunto de clases que implementan las interfaces Java y que

utilizan los métodos de registro para declarar los tipos de localizadores a base de

datos (URL) que pueden manejar. Para utilizar una base de datos particular, el

usuario ejecuta su programa junto con la librería de conexión apropiada al modelo

de su base de datos, y accede a ella estableciendo una conexión, para ello provee

en localizador a la base de datos y los parámetros de conexión específicos. A

partir de allí puede realizar con cualquier tipo de tareas con la base de datos a las

que tenga permiso: consultas, actualizaciones, creado modificado y borrado de

tablas, ejecución de procedimientos almacenados en la base de datos, etc.

JDBC cumple su objetivo mediante un conjunto de interfaces de java, cada una

implementada de manera diferente por distintos distribuidores. El conjunto de

clases que la componen se denomina el controlador JDBC.

3.3.2.1 Jerarquía Clases java sql

Consideremos las figuras planas cerradas como el rectángulo, y el círculo. Tales

figuras comparten características comunes como es la posición de la figura, de su

centro, y el área de la figura, aunque el procedimiento para calcular dicha área sea

completamente distinto. Podemos por tanto, diseñar una jerarquía de clases, tal

que la clase base denominada Figura, tenga las características comunes y cada

clase derivada las específicas.

La clase Figura es la que contiene las características comunes a dichas figuras

concretas por tanto, no tiene forma ni tiene área. Esto lo expresamos declarando

Page 30: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

32

Figura como una clase abstracta, declarando la función miembro área abstracta.

Las clases abstractas solamente se pueden usar como clases base para otras

clases. No se pueden crear objetos pertenecientes a una clase abstracta. Sin

embargo, se pueden declarar variables de dichas clases.

En el juego del ajedrez podemos definir una clase base denominada Pieza, con

las características comunes a todas las piezas, como es su posición en el tablero,

y derivar de ella las características específicas de cada pieza particular. Así pues,

la clase Pieza será una clase abstracta con una función abstracta denominada

mover, y cada tipo de pieza definirá dicha función de acuerdo a las reglas de su

movimiento sobre el tablero.

La clase Figura

La definición de la clase abstracta Figura, contiene la posición x e y de la figura

particular, de su centro, y la función área, que se va a definir en las clases

derivadas para calcular el área de cada figura en particular.

publicabstractclassFigura {

protectedint x;

protectedint y;

public Figura(int x, int y) {

this.x=x;

this.y=y;

}

publicabstractdoublearea();

}

La clase Rectángulo

Las clases derivadas heredan los miembros dato x e y de la clase base, y definen la función area,

declarada abstract en la clase base Figura, ya que cada figura particular tiene una fórmula distinta

para calcular su área. Por ejemplo, la clase derivada Rectángulo, tiene como datos, aparte de su

posición (x, y) en el plano, sus dimensiones, es decir, su anchura ancho y altura alto.

class Rectángulo extends Figura

{

protecteddouble ancho, alto;

public Rectángulo(int x, int y, double ancho, double alto)

Page 31: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

33

{

super(x,y);

this.ancho=ancho;

this.alto=alto;

}

publicdoublearea(){

return ancho*alto;

}

}

La primera sentencia en el constructor de la clase derivada es una llamada al constructor de la

clase base, para ello se emplea la palabra reservada super. El constructor de la clase derivada

llama al constructor de la clase base y le pasa las coordenadas del punto x e y. Después inicializan

sus miembros dato ancho y alto.

En la definición de la función area, se calcula el área del rectángulo como producto de la anchura

por la altura, y se devuelve el resultado.

La claseCírculo

class Circulo extends Figura

{

protecteddouble radio;

public Circulo(int x, int y, double radio)

{

super(x,y);

this.radio=radio;

}

publicdoublearea(){

returnMath.PI*radio*radio;

}

}

Como vemos, la primera sentencia en el constructor de la clase derivada es una llamada al

constructor de la clase base empleando la palabra reservada súper. Posteriormente, se inicializa el

miembro dato radio, de la clase derivada Círculo.

En la definición de la función área, se calcula el área del círculo mediante la conocida fórmula

PI∗r2, o bien PI*r*r. La constante Math.PI es una aproximación decimal del número irracional PI.

Page 32: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

34

Uso de la jerarquía de clases

Creamos un objeto c de la clase Círculo situado en el punto (0, 0) y de 5.5 unidades de radio.

Calculamos y mostramos el valor de su área.

Circulo c=new Circulo(0, 0, 5.5);

System.out.println("Area del círculo "+c.area());

Creamos un objeto r de la clase Rectángulo situado en el punto (0, 0) y de dimensiones 5.5 de

anchura y 2 unidades de largo. Calculamos y mostramos el valor de su área.

Rectángulo r=new Rectángulo(0, 0, 5.5, 2.0);

System.out.println("Area del rectángulo "+r.area());

Veamos ahora, una forma alternativa, guardamos el valor devuelto por new al crear objetos de las

clases derivadas en una variable f del tipo Figura (clase base).

Figura f=new Circulo(0, 0, 5.5);

System.out.println("Area del círculo "+f.area());

f=new Rectangulo(0, 0, 5.5, 2.0);

System.out.println("Area del rectángulo "+f.area());

3.3.2.2 Interface Java sqlconnection

Un objeto de conexión Derby no es recolector de basura hasta que todos los otros

objetos JDBC creado a partir de que la conexión se cierran de forma explícita o

sean ellos mismos recolectores de basura. Una vez que se cierra la conexión, no

hay más peticiones JDBC se puede hacer frente a los objetos creados a partir de

la conexión. No cierra explícitamente el objeto Connection hasta que ya no lo

necesita para ejecutar sentencias. Una sesión de gravedad o superior excepción

hace que la conexión se cierre y todos los demás objetos de JDBC en contra de

cerrar. Severidad el sistema excepciones que el sistema Derby para cerrar, que no

sólo cierra la conexión, pero no significa que las nuevas conexiones debe ser

creada en la JVM.

• **java.sql.Connection.setTransactionIsolation method**

Page 33: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

35

• y java.sql.Connection.TRANSACTION_READ_UNCOMMITTED aislamientos de

transacción están disponibles en una base de datos Derby.

• TRANSACTION_READ_COMMITTED es el nivel de aislamiento predeterminado.

• Cambiar el actual aislamiento de la conexión con setTransactionIsolation confirma

latransacción actual y comienza una nueva transacción. Para más detalles sobre

aislamiento de la transacción, consulte "Bloqueo, la concurrencia, y el aislamiento"

en la Guía del Programador de Derby.

• **java.sql.Connection.setTransactionIsolationmétodo**

• **java.sql.Connection.setReadOnly

method****java.sql.Connection.setReadOnlymétodo**

• **java.sql.Connection.isReadOnly method****java.sql.Connection.isReadOnlymétodo**

• **Connectionfunctionalitynotsupported** **Conexión de la funcionalidad no es

compatible**

Page 34: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

36

3.3.2.3 Interface Java sqlstatement

java.sql.Statement interfaz

Derby no implementa el método de setEscapeProcessingjava.sql.Statement. Además, el

método de cancelar plantea una "característica que no se admite" una excepción.

Notas de aplicación sobre los métodos de declaración

Firma Notas de aplicación

ResultSet getGeneratedKeys() Si el usuario ha indicado que genera

automáticamente las claves debe estar disponible,

este método devuelve los mismos resultados que

una llamada a la IDENTITY_VAL_LOCAL función.

Otherwisethismethodreturnsnull.Contrario, este

método devuelve un valor nulo.

boolean execute(String sql, int

[] columnIndexes)

Cada índice de la columna de la matriz debe

conocer el significado del incremento

automáticocolumna de la tabla de destino de

INSERT.

Compatible con el modo incorporadas.

boolean execute (String sql,

String []

columnNames)

Cada nombre de la columna de la matriz debe

designar a un incremento automático de columna

en la tabla de destino de INSERT.

Compatible con el modo incorporadas.

Int executeUpdate

(String sql, int []

columnIndexes)

Cada índice de la columna de la matriz debe

conocer el significado del incremento automático

de columna de la tabla de destino de INSERT.

Compatible con el modo incorporadas.

Page 35: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

37

Int executeUpdate

(String sql, String []

columnNames

Cada nombre de la columna de la matriz debe

designar a un incremento automático de columna

en la tabla de destino de INSERT.Compatible con

el modo incorporado.

3.3.2.4 Interface Java sqlresultset

ResultSet interfaz pública

Un ResultSet proporciona acceso a una tabla de datos generados por la ejecución

de una Declaración.

Las filas de la tabla se recuperan en secuencia.

Dentro de una fila de sus valores de columna se puede acceder en cualquier

orden.

Un ResultSet mantiene un cursor que apunta a la fila actual de datos.

Inicialmente, el cursor se coloca antes de la primera fila.

El "siguiente" método mueve el cursor a la siguiente fila.

Los métodos getXXX recuperar los valores de columna de la fila actual.

Puede recuperar los valores, ya sea usando el número de índice de la columna, o

utilizando el nombre de la columna.

En general, utilizando el índice de la columna será más eficiente.

Las columnas están numeradas del 1.

Para una máxima portabilidad, las columnas de resultados dentro de cada fila

deben ser leídas de izquierda a derecha y de cada columna debe ser leído sólo

una vez.

Page 36: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

38

3.3.2.5 Interfazjava.sql.ResultSet

Para los métodos getXXX, el driver JDBC intenta convertir los datos subyacentes

a la especificada de tipo Java y devuelve un valor adecuado Java.

Vea la especificación de JDBC para las asignaciones permitidas de tipos SQL a

tipos Java con los métodos ResultSet.getXXX.

Nombres de columna utilizados como entrada a los métodos getXXX son

mayúsculas y minúsculas.

Al realizar una getXXX utilizando un nombre de columna, si varias columnas

tienen el mismo nombre, entonces el valor de la columna correspondiente primero

será devuelto.

La opción de nombre de la columna está diseñada para ser utilizado cuando los

nombres de columna se utilizan en la consulta SQL.

Para las columnas que no se mencionen explícitamente en la consulta, lo mejor es

usar los números de la columna.

Si los nombres de columna se utiliza no hay forma de que el programador para

garantizar que en realidad se refieren a las columnas previstas.

Un conjunto de resultados se cierra automáticamente por el Estado que genera al

Estado que se cierra, vuelve a ejecutar, o se utiliza para recuperar el siguiente

resultado de una secuencia de varios resultados.

El número, tipos y propiedades de las columnas de un ResultSet son

proporcionados por el objeto ResulSetMetaData devuelto por el método

getMetaData.

Page 37: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

39

3.3.3 Instalación y configuración del driver acorde al gestor de base de datos. Empezar con JDBC

Lo primero que tenemos que hacer es asegurarnos de que disponemos de la

configuración apropiada. Esto incluye los siguientes pasos.

1. Instalar Java y el JDBC en nuestra máquina.

Para instalar tanto la plataforma JAVA como el API JDBC, simplemente

tenemos que seguir las instrucciones de descarga de la última versión del

JDK (Java Development Kit). Junto con el JDK también viene el JDBC.. El

código de ejemplo de demostración del API del JDBC 1.0 fue escrito para el

JDK 1.1 y se ejecutará en cualquier versión de la plataforma Java compatible

con el JDK 1.1, incluyendo el JDK1.2. Teniendo en cuenta que los ejemplos

del API del JDBC 2.0 requieren el JDK 1.2 y no se podrán ejecutar sobe el

JDK 1.1.

Podrás encontrar la última versión del JDK en la siguiente

dirección:http://java.sun.com/products/JDK/CurrentRelease

2. Instalar un driver en nuestra máquina.

Nuestro Driver debe incluir instrucciones para su instalación. Para los drivers

JDBC escritos para controladores de bases de datos específicos la

instalación consiste sólo en copiar el driver en nuesta máquina; no se

necesita ninguna configuración especial.

El driver "puente JDBC-ODBC" no es tan sencillo de configurar. Si

descargamos las versiones Solaris o Windows de JDK 1.1, automáticamente

obtendremos una versión del driver Bridge JDBC-ODBC, que tampoco

requiere una configuración especial. Si embargo, ODBC, si lo necesita. Si no

tenemos ODBC en nuestra máquina, necesitaremos preguntarle al vendedor

del driver ODBC sobre su instalación y configuración.

3. Instalar nuestro Controlador de Base de Datos si es necesario.

Page 38: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

40

Si no tenemos instalado un controlador de base de datos, necesitaremos

seguir las instrucciones de instalación del vendedor. La mayoría de los

usuarios tienen un controlador de base de datos instalado y trabajarán con un

base de datos establecida.

Establecer una Conexión

Lo primero que tenemos que hacer es establecer una conexión con el controlador

de base de datos que queremos utilizar. Esto implica dos pasos: (1) cargar el

driver y (2) hacer la conexión.

Cargar los Drivers

Cargar el driver o drivers que queremos utilizar es muy sencillo y sólo implica una

línea de código. Si, por ejemplo, queremos utilizar el puente JDBC-ODBC, se

cargaría la siguiente línea de código.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

La documentación del driver nos dará el nombre de la clase a utilizar. Por ejemplo,

si el nombre de la clase es jdbc.DriverXYZ, cargaríamos el driver con esta línea de

código.

Class.forName("jdbc.DriverXYZ");

No necesitamos crear un ejemplar de un driver y registrarlo con

el DriverManager porque la llamada a Class.forName lo hace automáticamente. Si

hubiéramos creado nuestro propio ejemplar, creariamos un duplicado innecesario,

pero no pasaría nada.

Una vez cargado el driver, es posible hacer una conexión con un controlador de

base de datos.

Hacer la Conexión

El segundo paso para establecer una conexión es tener el driver apropiado

conectado al controlador de base de datos. La siguiente línea de código ilustra la

idea general.

Connection con = DriverManager.getConnection(url, "myLogin", "myPassword");

Page 39: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

41

Este paso también es sencillo, lo más duro es saber qué suministrar para url. Si

estamos utilizando el puente JDBC-ODBC, el JDBC URL empezará

con jdbc:odbc:. el resto de la URL normalmente es la fuente de nuestros datos o el

sistema de base de datos. Por eso, si estamos utilizando ODBC para acceder a

una fuente de datos ODBC llamada "Fred," por ejemplo, nuestro URL podría

ser jdbc:odbc:Fred. En lugar de "myLogin" pondríamos el nombre utilizado para

entrar en el controlador de la base de datos; en lugar de "myPassword"

pondríamos nuestra password para el controlador de la base de datos. Por eso si

entramos en el controlador con el nombre "Fernando" y la password of "J8," estas

dos líneas de código estableceran una conexión.

String url = "jdbc:odbc:Fred";

Connection con = DriverManager.getConnection(url, "Fernando", "J8");

Si estamos utilizando un puente JDBC desarrollado por una tercera parte, la

documentación nos dirá el subprotocolo a utilizar, es decir, qué poner despues

de jdbc: en la URL. Por ejemplo, si el desarrollador ha registrado el nombre "acme"

como el subprotocolo, la primera y segunda parte de la URL de JDBC

serán jdbc:acme:. La documentación del driver también nos dará las guías para el

resto de la URL del JDBC. Esta última parte de la URL suministra información para

la identificación de los datos fuente.

Si uno de los drivers que hemos cargado reconoce la URL suministada por el

métodoDriverManager.getConnection, dicho driver establecerá una conexión con

el controlador de base de datos especificado en la URL del JDBC. La

clase DriverManager, como su nombre indica, maneja todos los detalles del

establecimiento de la conexión detrás de la escena. A menos que estemos

escribiendo un driver, posiblemente nunca utilizaremos ningún método del

interface Driver, y el único método de DriverManager que realmente necesitaremos

conocer es DriverManager.getConnection.

La conexión devuelta por el método DriverManager.getConnection es una

conexión abierta que se puede utilizar para crear sentencias JDBC que pasen

nuestras sentencias SQL al controlador de la base de datos. En el ejemplo

anterior, con es una conexión abierta, y se utilizará en los ejemplos posteriores.

Page 40: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

42

3.3.4 Prototipo de aplicaciones con conectividad a bases de

datos

JDBC Driver

� Para poder conectarse a la BD y lanzar consultas, es preciso tener un driver adecuado para ella:

� Un driver suele ser un fichero .jarque contiene una implementación de todos los interfaces del API de JDBC

� Nuestro código nunca depende del driver, dado que siempre trabaja en conjunto con los paquetes java.sqly javax.sql

� JDBC es necesario, ya que a pesar de la existencia de ODBC, éste es una

interfaz escrita en lenguaje C, que al no ser un lenguaje portátil, haría que las aplicaciones Java también perdiesen la portabilidad.

� Desventaja de ODBC: debe instalarse manualmente en cada máquina; los drivers JDBC, al estar escritos en Java son automáticamente instalables, portables y seguros.

Siete pasos básicos para programar en JDBC

o Cargar el driver de la base de datos a acceder o Definir el “URL” usado para… o Establecer la conexión o Crear una orden SQL o Ejecutarla o Procesar los resultados o Cerrar la conexión

� Al utilizar el URL, un nombre de usuario y una contraseña, la aplicación

requerirá primeramente implementar un objeto java.sql.Connection desde el objeto DriverManager.

� Éste DriverManager buscará en todas las implementaciones java.sql.Driver un controlador específico que se conecte al URL indicado.

� Si se agotan todas las posibilidades sin encontrar un driver adecuado, se generará una excepción en la aplicación.

Cargar el Driver // cargar las clases relacionadas con sql

. . .

// carga el driver usando el metodoClass.forName()

Page 41: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

43

try {

Class.forName("org.postgresql.Driver");

} catch (ClassNotFoundExceptioncnfe) {

System.out.println("Couldn't find the driver!");

System.out.println("Let's print a stack trace, and exit.");

cnfe.printStackTrace();

System.exit(1);

}

// Si el driver no está disponible, el método forName() //emitirá una

excepcion del tipo //ClassNotFoundException.

Cargar el Driver II

� Como se puede ver cargar el driver requiere una única línea de código. � La forma de cargar el driver mostrada en la transparencia anterior es la más

común pero hace que el codigo no sea portable, si cambiamos de base de datos y la nueva elección no es postgreSQL.

� Otra posibilidad es especificar el driver necesario cuando se ejecuta el programa pasándolo mediante el argumento. Por ejemplo:

� java -Djdbc.drivers=org.mysql.Drivermyaplicacion Definir el “URL” usado para…. Establecer la conexión Una vez cargado el driver hay que solicitar una conexión a la base de datos, para ello se usa la clase DriverManager y un URL como el siguiente.

jdbc:postgresql:películas

jdbc:nombre_driver_base://host:puerto/nombre_de_la_base

DriverManager

� Una vez que el Driver reconoce el URL,se crea una conexión a la BD usando el nombre y contraseña proporcionados.

� Se envía entonces al DriverManager la implementación java.sql.Connection que representa la conexión a la BD.

� . � Enseguida, el DriverManager envía el objeto Connection a la aplicación. En

código, este proceso se representa con esta sola línea: � Connection con = DriverManager.getConnection(url, nombre, contraseña);

Page 42: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

44

Establecer la conexion

Connection connection = null;

connection =

DriverManager.getConnection ("jdbc:postgresql:peliculas

", "username","password");

Conseguir informacion sobre la base importjava.sql.DatabaseMetaData

//cargar driver

//conectarse a la base

. . .

DatabaseMetaDatadbMetaData = connection.getMetaData();

String productName =

dbMetaData.getDatabaseProductName();

System.out.println("Database: " + productName);

String productVersion =

dbMetaData.getDatabaseProductVersion();

System.out.println("Version: " + productVersion);

// check if "actor" table is there

ResultSet tables = dbMetaData.getTables(null, null, "actor", null);

if (tables.next()) {

System.out.println("Table exists");

}

Page 43: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

45

Page 44: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

3

3.1 ODBC

3.1.1 Terminología y conceptos

Es un estándar de acceso a bases de datos desarrollado por SQL Access Group en 1992, el objetivo de ODBC es hacer posible el acceder a cualquier dato desde cualquier aplicación

ODBC logra esto al insertar una capa intermedia (CLI) denominada nivel de Interfaz de Cliente SQL, entre la aplicación y el DBMS, el propósito de esta capa es traducir las consultas de datos de la aplicación en comandos que el DBMS entienda

ODBC: conexión abierta de base de datos

3.1.2 Administrador de orígenes de datos

En la arquitectura ODBC, una aplicación (como Access o un programa de Microsoft Visual Basic) se conecta al Administrador de controladores ODBC que, a su vez, utiliza un controlador ODBC específico (por ejemplo, el controlador ODBC de Microsoft SQL) para conectarse a un origen de datos (en este caso, una base de datos de Microsoft SQL Server (base de datos SQL: base de datos basada en el lenguaje SQL, lenguaje de consulta estructurado.))

3.1.3 Instalación y configuración del driver acorde al gestor de

bases de datos.

Instalar este driver sirve para que desde un sistema Microsoft Windows se pueda acceder a una base de datos que estará en un gestor de bd (MySQL, SQL server).

Los driver permite acceder a los datos de un sistema gestor de bd atraves de un lenguaje de base datos utilizando el ODBC.

Para configurar el ODBC se utiliza el buscador de inicio y se escribe ODBC nos arrojara una aplicación llamada “orígenes de datos ODBC “le damos click y seleccionamos agregar de las opciones que nos presenta si conectaremos a SQL server elegimos la opción SQL native client y colocamos el nombre de nuestro ODBC y en server el nombre que tiene nuestro servidor.

Page 45: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

4

Page 46: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

5

Page 47: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

3

JDBC

Terminología y conceptos

Es una API que permite la ejecución de operaciones sobre bases de datos desde el lenguaje de programación Java.

SQL y JDBC.

Jerarquía de clases javaSQL.

Interface java. SQL.Connection.

Interface Java. SQL. Statement.

Interface java.SQL.resultset.

Se consideran las figuras planas cerradas como el rectángulo, y el círculo.

No cierra explícitamente el objeto Connection hasta que ya no lo necesita para ejecutar sentencias.

El método de cancelar Plantea una "característica no se admite" una excepción.

Proporciona acceso a una tabla de datos generados por la ejecución de una Declaración.

Instalación y configuración del Driver acorde al gestor de base de datos.

Prototipo de aplicaciones con Conectividad a bases de datos.

Sirve para que desde un sistema Microsoft Windows se pueda acceder a una base de datos MySQL.

Utilizando SQL, podemos especificar exactamente qué registros deseamos recuperar yel orden en que los deseamos.

Java DatabaseConnectivity

Page 48: 95058673 Unidad 3 Tecnologias de Conectividad a Base de Datos

4

REFERENCIAS BIBLIOGRÁFICAS

• http://yoalo.wikispaces.com/TALLER+DE+BASES+DE+DATO

S

• http://tavoberry.com/blog/conectividad-de-java-con- mysql-

mediante-jdbc/

• http://tavoberry.com/blog/tag/tecnologia-de-conecti vidad/

• http://catarina.udlap.mx/u_dl_a/tales/documentos/ms p/romer

o_m_m/capitulo2.pdf

• http://kalistog.wordpress.com/odbc/

• http://casidiablo.net/java-database-connectivity/

• http://www.programacion.com/articulo/acceso_a_bases _de_

datos_[jdbc]_93/0

• http://www.programacion.com/articulo/acceso_a_bases _de_

datos_[jdbc]_93/1

• http://www.programacion.com/articulo/acceso_a_bases _de_

datos_[jdbc]_93/2

• http://www.programacion.com/articulo/acceso_a_bases _de_

datos_[jdbc]_93/3

• http://www.programacion.com/articulo/acceso_a_bases _de_

datos_[jdbc]_93/4

• http://msdn.microsoft.com/es-es/library/ms378526.as px