Anda di halaman 1dari 48

INSTITUTO TECNOLGICO SUPERIOR DE CINTALAPA

Presenta: Presenta: JAVIER ALEJANDRO SANTOS H. CATEDRTICO: ISC. VIOLETA GPE. CLEMENTE ARCE MATERIA: TALLER DE BASE DE DATOS PROYECTO: PROYECTO: UNIDAD III: TECNOLOGAS DE CONECTIVIDAD A BASE DE DATOS (INVESTIGACION) CARRERA: LIC. EN INFORMTICA SEMESTRE: 6 F FECHA: 24/05/2012

CINTALAPA DE FIGUEROA, CHIAPAS.

ndice

PAGINA INTRODUCCIN SNTESIS UNIDAD III: TECNOLOGAS DE CONECTIVIDAD A BASES DE DATOS. 3.1 ODBC. 3.1.1 TERMINOLOGA Y CONCEPTOS 3.1.2 ADMINISTRADOR DE ORGENES DE DATOS ODBC. 3.1.3 INSTALACIN Y CONFIGURACIN DEL DRIVER ACORDE AL 3.2 ADO.NET. 3.2.1 TERMINOLOGA Y CONCEPTOS 3.2.2 COMPONENTES DISPONIBLES. 3.2.2.1 CONNECTION. 3.2.2.2 COMMAND 3.2.2.3 RECORDSOURCE. 3.2.2.4 ERROR. 3.2.3 PROTOTIPO DE APLICACIONES CON CONECTIVIDAD A BASES DE DATOS. 3.3 JDBC 3.3.1 TERMINOLOGA Y CONCEPTOS. 3.3.2 SQL Y JDBC. 3.3.2.1 JERARQUA DE CLASES JAVA.SQL 3.3.2.2 INTERFACE JAVA.SQL.CONNECTION. 3.3.2.3 INTERFACE JAVA.SQL.STATEMENT 3.3.2.4 INTERFACE JAVA.SQL.RESULTSET 3.3.2.5 JERARQUA DE CLASES JAVAX.SQL 3.3.3 INSTALACIN Y CONFIGURACIN DEL DRIVER ACORDE AL GESTOR DE BASE DE DATOS 3.3.4 PROTOTIPO DE APLICACIONES CON CONECTIVIDAD A BASES DE DATOS. ANEXOS REFERENCIAS BIBLIOGRFICAS 5 7 9 9 9 10 12 14 14 14 17 19 20 21 23 29 29 30 31 34 36 37 38 39 42 45 50

Introduccin
Una base de datos es una coleccin de datos organizados y estructurados segn un determinado modelo de informacin que refleja no slo los datos en s mismos, sino tambin las relaciones que existen entre ellos. Una base de datos se disea con un propsito especfico y debe ser organizada con una lgica coherente. Los datos podrn ser compartidos por distintos usuarios y aplicaciones, pero deben conservar su integridad y seguridad al margen de las interacciones de ambos. La definicin y descripcin de los datos han de ser nicas para minimizar la redundancia y maximizar la independencia en su utilizacin. 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 fotografas, pero tambin personas e, incluso, conceptos e ideas abstractas. Las entidades poseen atributos y mantienen relaciones entre ellas. Hoy tambin destaca la utilizacin de bases de datos distribuidas ya que cada vez es ms corriente el uso de arquitecturas de cliente-servidor y trabajo en grupo. Los principales problemas que se generan por el uso de la tecnologa de bases de datos distribuidas se refieren a la duplicidad de datos y a su integridad al momento de realizar actualizaciones a los mismos. Adems, el control de la informacin puede constituir una desventaja, debido a que se encuentra diseminada en diferentes localizaciones geogrficas. El esquema de la base de datos est representado por un conjunto de clases que definen las caractersticas y el comportamiento de los objetos que conformarn 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 cmo comportarse, sin tener que apoyarse en aplicaciones externas

Sntesis 3.1 ODBC

ODBC es un estndar 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 aplicacin, sin importar qu sistema de gestin de bases de datos. Su origen de datos est formado por la procedencia de los datos y la informacin de conexin 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. Tambin las aplicaciones son variadas, por ejemplo podemos utilizarlo para crear un dsn asociado a una base de datos mysql, de modo que nuestras pginas asp podran 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 creacin 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 filosofa 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 parmetros, ruta y caractersticas de la conexin segn los datos que solicite el creador o fabricante.

Sntesis 3.2 ADO.NET

ADO.NET satisface diversas necesidades de desarrollo, como la creacin 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 diseados explcitamente para la manipulacin de datos y el acceso rpido a datos de slo lectura y slo avance.DataSet el DataSet de ADO.NET est expresamente diseado para el acceso a datos independientemente del origen de datos. El DataSet de ADO.NET est expresamente diseado para el acceso a datos independientemente del origen de datos. Como resultado, se puede utilizar con mltiples y distintos orgenes de datos, con datos XML o para administrar datos locales de la aplicacin. El DataSetcontiene una coleccin de uno o ms objetos DataTable formados por filas y columnas de datos, as como informacin 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 aplicacin si utiliza elDataReader para devolver sus datos de slo avance y de slo 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 utilizara el DataSet, adems de evitar el procesamiento necesario para crear y rellenar el contenido de DataSet.

Sntesis 3.3 JDBC

JDBC, es una API que permite la ejecucin de operaciones sobre bases de datos desde el lenguaje de programacin 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 caractersticas es el manejo del lgebra y el clculo relacional permitiendo lanzar consultas con el fin de recuperar informacin de inters de una base de datos, de una forma sencilla. Es un lenguaje de cuarta generacin. 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 caractersticas es el manejo del lgebra y el clculo relacional permitiendo lanzar consultas con el fin de recuperar informacin de inters de una base de datos, de una forma sencilla.

UNIDAD III
TECNOLOGAS DE CONECTIVIDAD A BASES DE DATOS.
3.1 ODBC Terminologa y Conceptos

Open DataBaseConnectivity (ODBC) es un estndar 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 aplicacin, sin importar qu sistema de gestin 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 aplicacin y el DBMS, el propsito de esta capa es traducir las consultas de datos de la aplicacin en comandos que el DBMS entienda. Para que esto funcione tanto la aplicacin como el DBMS deben ser compatibles con ODBC, esto es que la aplicacin debe ser capaz de producir comandos ODBC y el DBMS debe ser capaz de responder a ellos. Desde la versin 2.0 el estndar soporta SAG ySQL. El software funciona de dos modos, con un software manejador en el cliente, o una filosofa 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 parmetros, ruta y caractersticas de la conexin segn los datos que solicite el creador o fabricante. Java DatabaseConnectivity (JDBC) es un derivado inspirado en el mismo, una interfaz de programacin de aplicaciones que permite la ejecucin de operaciones sobre bases de datos desde el lenguaje de programacin 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.

3.1.2 Administrador Origenes de datos Odbc


Orgenes de datos ODBC: Qu es un origen de datos?

A un origen de datos ODBC (origen de datos ODBC: datos e informacin 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 travs de un controlador de Conectividad abierta de base de datos (ODBC (Conectividad abierta de bases de datos): mtodo estndar 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 informacin de conexin necesaria para tener acceso a los mismos. Ejemplos de orgenes de datos son Microsoft Access, Microsoft SQL Server, Oracle RDBMS, una hoja de clculo y un archivo de texto. Ejemplos de informacin de conexin son la ubicacin del servidor, el nombre de la base de datos, el Id. de inicio de sesin, la contrasea y diversas opciones de controlador ODBC que describen cmo conectarse al origen de datos. En la arquitectura ODBC, una aplicacin (como Access o un programa de Microsoft Visual Basic) se conecta al Administrador de controladores ODBC que, a su vez, utiliza un controlador ODBC especfico (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 orgenes de datos ODBC se utilizan para conectarse a orgenes de datos externos a Access que no tienen controladores integrados. Para conectarse a estos orgenes de datos, siga el procedimiento que se indica a continuacin:

10

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 orgenes de datos ODBC para almacenar la informacin de conexin en el Registro de Microsoft Windows o en un archivo DSN, o bien una cadena de conexin en cdigo de Visual Basic para pasar la informacin de conexin directamente al Administrador de controladores ODBC.

Orgenes de datos de archivos

Los orgenes de datos de archivos (tambin denominados archivos DSN) almacenan informacin de conexin en un archivo de texto, no en el Registro de Windows, y, generalmente, se pueden utilizar con mayor flexibilidad que los orgenes 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 aplicacin pueda basarse en informacin de conexin coherente y precisa para todos los equipos utilizados. Tambin se puede colocar el origen de datos de archivo en un nico servidor, compartirlo entre varios equipos en la red, y mantener fcilmente la informacin de conexin en una ubicacin.

Tambin 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 orgenes de datos de archivos que no se pueden compartir para obtener acceso a orgenes de datos de equipos existentes desde orgenes de datos de archivos.

Cadenas de conexin Si es programador, puede definir una cadena de conexin con formato en su cdigo de Microsoft Visual Basic que especifique la informacin de conexin. La utilizacin de una cadena de conexin evita la definicin de un equipo o un archivo

11

DSN y pasa la informacin de conexin 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 instalacin de su aplicacin. Para mantener la seguridad de la informacin de cadena de conexin de su cdigo, ayude a proteger el cdigo creando un archivo MDE o mediante una contrasea.

Nota de seguridad Utilice contraseas fuertes que combinen letras en maysculas y minsculas, nmeros y smbolos. Las contraseas dbiles son aquellas que no mezclan dichos elementos. Un ejemplo de contrasea fuerte sera Y6dh!et5, y de dbil, Casa27. Utilice una contrasea fuerte que pueda recordar para no tener que anotarla en ningn sitio.

3.1.3 InstalacinConfiguracin 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 pginas ASP podran acceder a dicha base de datos. Otra aplicacin 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 versin de Myodbc de la pgina de Mysql:
http://www.mysql.com/products/connector/odbc/

12

Cuando ya tenemos todo, instalamos la actualizacin 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 (Botn Inicio-> Configuracin-> Panel de control-> Fuentes de datos ODBC 32 bits). En este punto, tendrs 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 botn de Agregar para aadir una nueva fuente de datos y a continuacin, selecciona el driver de Mysql. Aparecer la siguiente pantalla:

En ella tendrs que rellenar los siguientes campos:

13

Windows DSN name: Nombre de la fuente de datos que estar disponible desde Windows. Mysql host (nameor IP): Nombre o direccin 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: Contrasea 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 estn estas opciones configuradas, se puede hacer clic en "OK" para cerrar las ventanas.

3.2 Ado.Net 3.2.1 Terminologa 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 creacin 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 creacin 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:

14

Proveedores de datos de .NET Framework El DataSet

Proveedores de datos de .NET Framework Los proveedores de datos de .NET Framework son componentes diseados explcitamente para la manipulacin de datos y el acceso rpido a datos de slo lectura y slo 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 informacin sobre parmetros. 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 diseado para el acceso a datos independientemente del origen de datos. Como resultado, se puede utilizar con mltiples y distintos orgenes de datos, con datos XML o para administrar datos locales de la aplicacin. El DataSetcontiene una coleccin de uno o ms objetos DataTable formados por filas y columnas de datos, as como informacin sobre claves principales, claves externas, restricciones y relaciones relativa a los datos incluidos en los objetos DataTable. En el diagrama siguiente se ilustra la relacin entre un proveedor de datos de .NET Framework y un DataSet.

15

Arquitectura de ADO.NET

Elegir un DataReader o un DataSet A la hora de decidir si su aplicacin 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 aplicacin requiere. Use unDataSet para hacer lo siguiente:

Almacene datos en la memoria cach de la aplicacin para poder manipularlos. Si solamente necesita leer los resultados de una consulta, el DataReader es la mejor eleccin.

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

16

Interactuar con datos dinmicamente, por ejemplo para enlazar con un control de formularios Windows Forms o para combinar y relacionar datos procedentes de varios orgenes.

Realizar procesamientos exhaustivos de datos sin necesidad de tener una conexin abierta con el origen de datos, lo que libera la conexin para que la utilicen otros clientes.

Si no necesita la funcionalidad proporcionada por el DataSet, puede mejorar el rendimiento de su aplicacin si utiliza elDataReader para devolver sus datos de slo avance y de slo 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 utilizara el DataSet, adems 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 conexin para conectarse a una fuente de datos especfica. Paraconectarse a la versin 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 versin 6. X o una versin 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.

17

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 versin 7.0 de Servidor o la utilizacin posterior el objeto de SqlConnection. El Proveedor de Datos de Marco .NET para el Servidor SQL apoya un formato de cuerda de conexin que es similar al OLE DB (LA ALHARACA) el formato de cuerda de conexin. Para nombres vlidos de formato de cadena y los valores, vea la propiedad SqlConnection.ConnectionString El ejemplo de cdigo siguiente demuestra como crear y abrir una conexin a un Servidor SQL (la versin 7.0 o posterior) de base de datos.

NwindConn As SqlConnection = New SqlConnection ("Data Source = localhost; Integrated Security = SSPI;" & _ "Initial Catalog=northwind" ) "Catlogoinicial = 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" ); "Catlogoinicial = Neptuno"); nwindConn.Open(); nwindConn.Open ();

Cierre de la conexin Se recomienda que siempre cierre la conexin cuando haya terminado de usarlo, para que la conexin sea devuelta al fondo.Esto se puede hacer utilizando los mtodos finales odisponer de los mtodos del objeto de Conexin. Las conexiones que explcitamente no estn cerradas no podran ser aadidas o devueltas al fondo. Por ejemplo, una conexin que ha salido del alcance, pero esto

18

explcitamente no ha estado cerrada slo ser devuelto al fondo de conexin si el tamao de fondo mximo ha sido alcanzado y la conexin es todava vlida.

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 conexin de objetos. El objeto de command requiere una instancia de un objeto de conexin para la ejecucin de las sentencias SQL. Es decir para recuperar datos o ejecutar una declaracin SQL contra una Fuente de Datos, usted tiene que crear un Objeto de Conexin y abrir una conexin a la Fuente de Datos, y asignar la conexin abierta a la propiedad de conexin 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.

19

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 debera 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 procesarn los datos que ha producido dicha consulta.

Por ejemplo si tenemos una base de datos con nuestra coleccin discogrfica, podramos 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 sera:

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" ms rpida. Es decir quedara 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 Datos 'Set Db = OpenDatabase("Nombre_Base_Datos")

20

DimSQLTmp As String DimMySnap As Recordset

SQLTmp = "select * from " &Nombre_Tabla& " <Consulta> " & " orderby " & Clasificar Set MySnap = Db.OpenRecordset(SQLTmp, dbOpenSnapshot) Err = 0 MySnap.MoveFirst IfErrThen Err = 0 'no hay datos, avisar MsgBox "No hay datos que coincidan con la bsqueda especificada," &vbCrLf& "(o no est bien realizada)", 64, "Listados" Exit Sub EndIf

'Aadir el resultado a un List List1.Clear

MySnap.MoveFirst Do UntilMySnap.EOF 'Procesar los datos... ' List1.AddItem MySnap("Cantante") & " " &MySnap("[Cancin]") '...y demsdatos

MySnap.MoveNext Loop MySnap.Close

3.2.2.4 Error
Los errores de base de datos, tambin llamados "errores del motor", ocurren cuando se dan errores en tiempo de ejecucin en los registros del cdigo de

21

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 enva 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 sern distintos de los que se producen si ocurre un error en una tabla local de Visual FoxPro. Adems, los errores del motor son a veces muy genricos, porque el motor de base de datos no tiene informacin 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 aplicacin de Visual FoxPro. Para controlar errores de base de datos de forma ms especfica para la aplicacin, puede crear desencadenadores con el comando CREATETRIGGER. El desencadenador se llama cuando se intenta la actualizacin de un registro (eliminar, insertar o actualizar). El cdigo de desencadenador personalizado puede buscar entonces condiciones de error especficas de la aplicacin e informar de ellas. Si controla errores de base de datos mediante desencadenadores, debera activar el bfer. De esta forma, cuando se actualiza un registro, se llama al desencadenador pero el registro no se enva automticamente 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 mediante desencadenadores

1. Dentro de una funcin definida por el usuario o un procedimiento almacenado, escriba su propio texto de mensaje.

22

2. Habilite el bfer con la funcin CURSORSETPROP( ) para mostrar su texto personalizado. Si el bfer 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.

Adems de evitar el error, es ms rpido que usar If...Then... para comprobar si el campo es nulo o est vaco.

Para cadenas:
Cadena = "" &rs!Campo

Para nmeros:
'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 espaol 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 versin 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

23

ms versiones simultneamente y debemos elegir una de ellas. Las versiones ms recientes tienen ms funcionalidades y tienen menos errores que las antiguas. La conexin con la base de datos dada Para trabajar con una base de datos, primero debemos establecer una conexin con sta. En el Formulario, declaramos el objeto MiConexin, que nos permitir la conexin con la base de datos
' declaro el objeto MiConexion como una variable de mdulo. ' Cuando se instancie ser la conexin con la base de datos DimMiConexionAsADODB.Connection

En este momento, el objeto MiConexion solo est declarado, pero todava no existe porque no ha sido instanciado. En el evento Form_Load, instanciamos el objeto MiConexion, y establecemos la conexin con la base de datos para poder comunicarnos con ella.
Private SubForm_Load() ' Instancio la conexin (ahora la conexin existe) SetMiConexin = NewADODB.Connection WithMiConexin ' Cursor en Cliente para poder usar un DataGrid .CursorLocation = adUseClient ' Abro la conexin con la base de datos Neptuno.mdb usando su DSN .Open "DSN=Neptuno" End With End Sub

Ya tengo la conexin instanciada y ya me he conectado con la base de datos. La autopista est abierta y funcionando. Ahora puedo hacer cosas con la informacin que contiene la base de datos. Puedo leerla, escribirla, borrarla, modificarla, etc. Tambin puedo manipular la propia base de datos. Puedo crear tablas, modificarlas, puedo crear usuarios, etc. Leo informacin de la base de datos Ahora que tenemos la conexin establecida con la base de datos, queremos leer informacin de sta y mostrarla en la pantalla.

24

Especificamos la informacin que queremos Primero, debemos especificarle, a la base de datos, qu informacin 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 WHERENombreProductoLIKE'%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, estn los campos previamente sealados Estn en la Tabla Productos FROM Productos

Indicamos una condicin. Queremos solo los registros en cuyo nombre est la palabra "Queso" WHERENombreProductoLIKE'%Queso%'

En Visual basic, creamos una variable de string a la que llamaremos "SQL". Podramos llamarla como querramos, podramos llamarla "Aguacate", Visual Basic lo manejara 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%'"

25

Ya tenemos especificado la orden que le vamos a enviar a la base de datos para que nos devuelva los registros con la informacin que queremos. Ahora debemos crear un Recordset, que es el objeto de ADO donde se recibir la informacin proveniente de la base de datos. Usamos un Recordset para recibir la informacin desde la base de datos Declaramos el objeto Recordset que recibir la informacin de la base de datos
DimrsAsADODB.Recordset

La variable "rs" recibir los datos provenientes de la base de datos. Ahora usamos la conexin para enviar la orden a la base de datos para que nos devuelva la informacin.
Setrs = MiConexion.Execute(SQL)

Cuando se ejecuta la sentencia previa, la conexin "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 informacin requerida. "MiConexion" lee esa informacin 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 informacin que lleg desde la base de datos, lista para ser usada. All tenemos, todos los registros de la Tabla "Productos" que cumplan con la condicin 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 informacin que contiene el Recordset en un DataGrid En el Recordset "rs" tenemos la informacin. Esta informacin es usable de muchas maneras, ya que con el Recordset tal y como est podemos recorrer esa informacin y manipularla, aadir 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.
SetDataGrid1.DataSource = rs

26

Cdigo completo del programa Nota: Para que el programa funcione solo hay que aadir un control DataGrid al Formulario y una referencia a Microsoft ActiveX Data ObjectsX.XX Library.
OptionExplicit ' ---------------------------------------------------------' Declaro el objeto MiConexion como una variable de mdulo. ' Cuando se instancie ser la conexin con la base de datos. ' ---------------------------------------------------------DimMiConexionAsADODB.Connection ' ---------------------------------------------------------' Al cargarse el Formulario hago el trabajo. ' (Aqu, a lo sumo, solo debera establecerse la conexin con la base de datos, ' ' y las dems cosas se deberan hacer en otro lado, pero este es solo un ejemplo sencillo)

' ---------------------------------------------------------Private SubForm_Load() ' ---------------------------------------------------------' Instancio la conexin y me conecto con la base de datos ' ---------------------------------------------------------SetMiConexion = NewADODB.Connection WithMiConexion ' Cursor en Cliente para poder usar un DataGrid .CursorLocation = adUseClient ' Abro la conexin con la base de datos usando un DSN .Open "DSN=Neptuno" End With ' ---------------------------------------------------------' Especifico qu informacin quiero de la base de datos ' ---------------------------------------------------------DimSQLAs String SQL = "SELECT IdProducto, NombreProducto" &vbCrLf& _ "From Productos" &vbCrLf& _ "WHERENombreProductoLIKE '%Queso%'" ' ---------------------------------------------------------' Cargo el recordset con la informacin proveniente de la base de datos

27

' ---------------------------------------------------------DimrsAsADODB.Recordset Setrs = MiConexion.Execute(SQL) ' ---------------------------------------------------------' Muestro la informacin en el DataGrid ' ---------------------------------------------------------SetDataGrid1.DataSource = rs End Sub

Imagen del programa


Se muestran los artculos de la Tabla Productos cuyos nombres contengan la palabra "queso".

28

3.3JDBC 3.3.1 Terminologa y conceptos


Java DatabaseConnectivity, ms conocida por sus siglas JDBC, es una API que permite la ejecucin de operaciones sobre bases de datos desde el lenguaje de programacin 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 coleccin de interfaces Java y mtodos de gestin de manejadores de conexin hacia cada modelo especfico 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 mtodos 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 conexin apropiada al modelo de su base de datos, y accede a ella estableciendo una conexin, para ello provee el localizador a la base de datos y los parmetros de conexin especficos. A partir de all puede realizar con cualquier tipo de tareas con la base de datos a las que tenga permiso: consulta, actualizacin, creacin, modificacin y borrado de tablas, ejecucin 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 Descripcin

DriverManager Para cargar un driver

Connection Statement

Para establecer conexiones con las bases de datos Para crear consultas SQL y enviarlas a las BBDD

29

ResultSet

Para almacenar el resultado de la consulta

3.3.2 Sql y Jdbc

SQL El Lenguaje de consulta estructurado (SQL [/esecuele/ en espaol, /sicul/ en ingls] 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 caractersticas es el manejo del lgebra y el clculo relacional permitiendo lanzar consultas con el fin de recuperar informacin de inters de una base de datos, de una forma sencilla. Es un lenguaje de cuarta generacin (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 terica y su orientacin al manejo de conjuntos de registros, y no a registros individuales, permite una alta productividad en codificacin. De esta forma una sola sentencia puede equivaler a uno o ms programas que utilizasen un lenguaje de bajo nivel orientado a registro.

JDBC Es el acrnimo de Java DatabaseConnectivity, un API que permite la ejecucin de

30

operaciones sobre bases de datos desde el lenguaje de programacin Java independientemente del sistema de operacin 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 coleccin de interfaces Java y mtodos de gestin de manejadores de conexin hacia cada modelo especfico 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 mtodos 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 librera de conexin apropiada al modelo de su base de datos, y accede a ella estableciendo una conexin, para ello provee en localizador a la base de datos y los parmetros de conexin especficos. 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, ejecucin 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 Jerarqua Clases java sql


Consideremos las figuras planas cerradas como el rectngulo, y el crculo. Tales figuras comparten caractersticas comunes como es la posicin 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, disear una jerarqua de clases, tal que la clase base denominada Figura, tenga las caractersticas comunes y cada clase derivada las especficas. La clase Figura es la que contiene las caractersticas comunes a dichas figuras concretas por tanto, no tiene forma ni tiene rea. Esto lo expresamos declarando

31

Figura como una clase abstracta, declarando la funcin 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 caractersticas comunes a todas las piezas, como es su posicin en el tablero, y derivar de ella las caractersticas especficas de cada pieza particular. As pues, la clase Pieza ser una clase abstracta con una funcin abstracta denominada mover, y cada tipo de pieza definir dicha funcin de acuerdo a las reglas de su movimiento sobre el tablero. La clase Figura La definicin de la clase abstracta Figura, contiene la posicin x e y de la figura particular, de su centro, y la funcin 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 Rectngulo Las clases derivadas heredan los miembros dato x e y de la clase base, y definen la funcin area, declarada abstract en la clase base Figura, ya que cada figura particular tiene una frmula distinta para calcular su rea. Por ejemplo, la clase derivada Rectngulo, tiene como datos, aparte de su posicin (x, y) en el plano, sus dimensiones, es decir, su anchura ancho y altura alto.

class Rectngulo extends Figura { protecteddouble ancho, alto; public Rectngulo(int x, int y, double ancho, double alto)

32

{ 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. Despus inicializan sus miembros dato ancho y alto. En la definicin de la funcin area, se calcula el rea del rectngulo como producto de la anchura por la altura, y se devuelve el resultado.

La claseCrculo

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 sper. Posteriormente, se inicializa el miembro dato radio, de la clase derivada Crculo. En la definicin de la funcin rea, se calcula el rea del crculo mediante la conocida frmula PIr2, o bien PI*r*r. La constante Math.PI es una aproximacin decimal del nmero irracional PI.

33

Uso de la jerarqua de clases Creamos un objeto c de la clase Crculo 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 crculo "+c.area()); Creamos un objeto r de la clase Rectngulo 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. Rectngulo r=new Rectngulo(0, 0, 5.5, 2.0); System.out.println("Area del rectngulo "+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 crculo "+f.area()); f=new Rectangulo(0, 0, 5.5, 2.0); System.out.println("Area del rectngulo "+f.area());

3.3.2.2 Interface Java sqlconnection


Un objeto de conexin Derby no es recolector de basura hasta que todos los otros objetos JDBC creado a partir de que la conexin se cierran de forma explcita o sean ellos mismos recolectores de basura. Una vez que se cierra la conexin, no hay ms peticiones JDBC se puede hacer frente a los objetos creados a partir de la conexin. No cierra explcitamente el objeto Connection hasta que ya no lo necesita para ejecutar sentencias. Una sesin de gravedad o superior excepcin hace que la conexin se cierre y todos los dems objetos de JDBC en contra de cerrar. Severidad el sistema excepciones que el sistema Derby para cerrar, que no slo cierra la conexin, pero no significa que las nuevas conexiones debe ser creada en la JVM.

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

34

y java.sql.Connection.TRANSACTION_READ_UNCOMMITTED aislamientos de transaccin estn disponibles en una base de datos Derby.

TRANSACTION_READ_COMMITTED es el nivel de aislamiento predeterminado.

Cambiar el actual aislamiento de la conexin con setTransactionIsolation confirma latransaccin actual y comienza una nueva transaccin. Para ms detalles sobre aislamiento de la transaccin, consulte "Bloqueo, la concurrencia, y el aislamiento" en la Gua del Programador de Derby.

**java.sql.Connection.setTransactionIsolationmtodo**

**java.sql.Connection.setReadOnly method****java.sql.Connection.setReadOnlymtodo**

**java.sql.Connection.isReadOnly method****java.sql.Connection.isReadOnlymtodo**

**Connectionfunctionalitynotsupported** **Conexin de la funcionalidad no es compatible**

35

3.3.2.3 Interface Java sqlstatement java.sql.Statement interfaz


Derby no implementa el mtodo de setEscapeProcessingjava.sql.Statement. Adems, el mtodo de cancelar plantea una "caracterstica que no se admite" una excepcin. Notas de aplicacin sobre los mtodos de declaracin Firma Notas de aplicacin

ResultSet getGeneratedKeys() Si el usuario ha indicado que genera automticamente las claves debe estar disponible, este mtodo devuelve los mismos resultados que una llamada a la IDENTITY_VAL_LOCAL funcin. Otherwisethismethodreturnsnull.Contrario, este mtodo devuelve un valor nulo. boolean execute(String sql, int Cada ndice de la columna de la matriz debe [] columnIndexes) conocer el significado del incremento automticocolumna 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 automtico 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 automtico de columna de la tabla de destino de INSERT. Compatible con el modo incorporadas.

36

Int

executeUpdate (String sql, String [] columnNames

Cada nombre de la columna de la matriz debe designar a un incremento automtico de columna en la tabla de destino de INSERT.Compatible con el modo incorporado.

3.3.2.4 Interface Java sqlresultset

ResultSet interfaz pblica Un ResultSet proporciona acceso a una tabla de datos generados por la ejecucin de una Declaracin. 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" mtodo mueve el cursor a la siguiente fila. Los mtodos getXXX recuperar los valores de columna de la fila actual. Puede recuperar los valores, ya sea usando el nmero de ndice de la columna, o utilizando el nombre de la columna. En general, utilizando el ndice de la columna ser ms eficiente.

Las columnas estn numeradas del 1. Para una mxima portabilidad, las columnas de resultados dentro de cada fila deben ser ledas de izquierda a derecha y de cada columna debe ser ledo slo una vez.

37

3.3.2.5 Interfazjava.sql.ResultSet
Para los mtodos getXXX, el driver JDBC intenta convertir los datos subyacentes a la especificada de tipo Java y devuelve un valor adecuado Java. Vea la especificacin de JDBC para las asignaciones permitidas de tipos SQL a tipos Java con los mtodos ResultSet.getXXX. Nombres de columna utilizados como entrada a los mtodos getXXX son maysculas y minsculas. 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 opcin de nombre de la columna est diseada para ser utilizado cuando los nombres de columna se utilizan en la consulta SQL. Para las columnas que no se mencionen explcitamente en la consulta, lo mejor es usar los nmeros 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 automticamente 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 nmero, tipos y propiedades de las columnas de un ResultSet son proporcionados por el objeto ResulSetMetaData devuelto por el mtodo getMetaData.

38

3.3.3 Instalacin y configuracin 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 configuracin apropiada. Esto incluye los siguientes pasos.

1. Instalar Java y el JDBC en nuestra mquina. Para instalar tanto la plataforma JAVA como el API JDBC, simplemente tenemos que seguir las instrucciones de descarga de la ltima versin del JDK (Java Development Kit). Junto con el JDK tambin viene el JDBC.. El cdigo de ejemplo de demostracin del API del JDBC 1.0 fue escrito para el JDK 1.1 y se ejecutar en cualquier versin 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 podrn ejecutar sobe el JDK 1.1. Podrs encontrar la ltima versin del JDK en la siguiente

direccin:http://java.sun.com/products/JDK/CurrentRelease 2. Instalar un driver en nuestra mquina. Nuestro Driver debe incluir instrucciones para su instalacin. Para los drivers JDBC escritos para controladores de bases de datos especficos la instalacin consiste slo en copiar el driver en nuesta mquina; no se necesita ninguna configuracin especial. El driver "puente JDBC-ODBC" no es tan sencillo de configurar. Si descargamos las versiones Solaris o Windows de JDK 1.1, automticamente obtendremos una versin del driver Bridge JDBC-ODBC, que tampoco requiere una configuracin especial. Si embargo, ODBC, si lo necesita. Si no tenemos ODBC en nuestra mquina, necesitaremos preguntarle al vendedor del driver ODBC sobre su instalacin y configuracin. 3. Instalar nuestro Controlador de Base de Datos si es necesario.

39

Si no tenemos instalado un controlador de base de datos, necesitaremos seguir las instrucciones de instalacin del vendedor. La mayora de los usuarios tienen un controlador de base de datos instalado y trabajarn con un base de datos establecida. Establecer una Conexin Lo primero que tenemos que hacer es establecer una conexin con el controlador de base de datos que queremos utilizar. Esto implica dos pasos: (1) cargar el driver y (2) hacer la conexin.

Cargar los Drivers Cargar el driver o drivers que queremos utilizar es muy sencillo y slo implica una lnea de cdigo. Si, por ejemplo, queremos utilizar el puente JDBC-ODBC, se cargara la siguiente lnea de cdigo. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); La documentacin del driver nos dar el nombre de la clase a utilizar. Por ejemplo, si el nombre de la clase es jdbc.DriverXYZ, cargaramos el driver con esta lnea de cdigo. 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 automticamente. Si hubiramos creado nuestro propio ejemplar, creariamos un duplicado innecesario, pero no pasara nada. Una vez cargado el driver, es posible hacer una conexin con un controlador de base de datos.

Hacer la Conexin El segundo paso para establecer una conexin es tener el driver apropiado conectado al controlador de base de datos. La siguiente lnea de cdigo ilustra la idea general. Connection con = DriverManager.getConnection(url, "myLogin", "myPassword");

40

Este paso tambin es sencillo, lo ms 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 podra ser jdbc:odbc:Fred. En lugar de "myLogin" pondramos el nombre utilizado para entrar en el controlador de la base de datos; en lugar de "myPassword" pondramos 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 lneas de cdigo estableceran una conexin. String url = "jdbc:odbc:Fred"; Connection con = DriverManager.getConnection(url, "Fernando", "J8"); Si estamos utilizando un puente JDBC desarrollado por una tercera parte, la documentacin 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 sern jdbc:acme:. La documentacin del driver tambin nos dar las guas para el resto de la URL del JDBC. Esta ltima parte de la URL suministra informacin para la identificacin de los datos fuente. Si uno de los drivers que hemos cargado reconoce la URL suministada por el mtodoDriverManager.getConnection, dicho driver establecer una conexin 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 conexin detrs de la escena. A menos que estemos escribiendo un driver, posiblemente nunca utilizaremos ningn mtodo del interface Driver, y el nico mtodo de DriverManager que realmente necesitaremos conocer es DriverManager.getConnection. La conexin devuelta por el mtodo DriverManager.getConnection es una conexin 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 conexin abierta, y se utilizar en los ejemplos posteriores.

41

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 implementacin de todos los interfaces del API de JDBC Nuestro cdigo 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 porttil, hara que las aplicaciones Java tambin perdiesen la portabilidad. Desventaja de ODBC: debe instalarse manualmente en cada mquina; los drivers JDBC, al estar escritos en Java son automticamente instalables, portables y seguros.

Siete pasos bsicos para programar en JDBC o o o o o o o Cargar el driver de la base de datos a acceder Definir el URL usado para Establecer la conexin Crear una orden SQL Ejecutarla Procesar los resultados Cerrar la conexin Al utilizar el URL, un nombre de usuario y una contrasea, la aplicacin requerir primeramente implementar un objeto java.sql.Connection desde el objeto DriverManager. ste DriverManager buscar en todas las implementaciones java.sql.Driver un controlador especfico que se conecte al URL indicado. Si se agotan todas las posibilidades sin encontrar un driver adecuado, se generar una excepcin en la aplicacin.

Cargar el Driver

// cargar las clases relacionadas con sql ... // carga el driver usando el metodoClass.forName()

42

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 mtodo forName() //emitir una excepcion del tipo //ClassNotFoundException. Cargar el Driver II
Como se puede ver cargar el driver requiere una nica lnea de cdigo. La forma de cargar el driver mostrada en la transparencia anterior es la ms comn pero hace que el codigo no sea portable, si cambiamos de base de datos y la nueva eleccin no es postgreSQL. Otra posibilidad es especificar el driver necesario cuando se ejecuta el programa pasndolo mediante el argumento. Por ejemplo: java -Djdbc.drivers=org.mysql.Drivermyaplicacion

Definir el URL usado para. Establecer la conexin Una vez cargado el driver hay que solicitar una conexin a la base de datos, para ello se usa la clase DriverManager y un URL como el siguiente.

jdbc:postgresql:pelculas jdbc:nombre_driver_base://host:puerto/nombre_de_la_base

DriverManager
Una vez que el Driver reconoce el URL,se crea una conexin a la BD usando el nombre y contrasea proporcionados. Se enva entonces al DriverManager la implementacin java.sql.Connection que representa la conexin a la BD. . Enseguida, el DriverManager enva el objeto Connection a la aplicacin. En cdigo, este proceso se representa con esta sola lnea: Connection con = DriverManager.getConnection(url, nombre, contrasea);

43

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"); }

44

45

3.1 ODBC

3.1.1 Terminologa y conceptos


ODBC: conexin abierta de base de datos
Es un estndar 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 aplicacin ODBC logra esto al insertar una capa intermedia (CLI) denominada nivel de Interfaz de Cliente SQL, entre la aplicacin y el DBMS, el propsito de esta capa es traducir las consultas de datos de la aplicacin en comandos que el DBMS entienda

3.1.2 Administrador de orgenes de datos


En la arquitectura ODBC, una aplicacin (como Access o un programa de Microsoft Visual Basic) se conecta al Administrador de controladores ODBC que, a su vez, utiliza un controlador ODBC especfico (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 Instalacin y configuracin 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 aplicacin llamada orgenes de datos ODBCle damos click y seleccionamos agregar de las opciones que nos presenta si conectaremos a SQL server elegimos la opcin SQL native client y colocamos el nombre de nuestro ODBC y en server el nombre que tiene nuestro servidor.

JDBC
Java DatabaseConnectivity

Terminologa y conceptos Es una API que permite la ejecucin de operaciones sobre bases de datos desde el lenguaje de programacin Java.

SQL y JDBC.

Jerarqua de clases javaSQL. Se consideran las figuras planas cerradas como el rectngulo, y el crculo.

Interface java. SQL.Connection.

Interface Java. SQL. Statement.

Interface java.SQL.resultset . Proporciona acceso a una tabla de datos generados por la ejecucin de una Declaracin.

No cierra explcitamente el objeto Connect ion hasta que ya no lo necesita para ejecutar sentencias.

El mtodo de cancelar Plantea una "caracterstica no se admite" una excepcin.

Instalacin y configuracin 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.

REFERENCIAS BIBLIOGRFICAS http://yoalo.wikispaces.com/TALLER+DE+BASES+DE+DATO S http://tavoberry.com/blog/conectividad-de-java-con-mysqlmediante-jdbc/ http://tavoberry.com/blog/tag/tecnologia-de-conectividad/ http://catarina.udlap.mx/u_dl_a/tales/documentos/msp/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.aspx

Anda mungkin juga menyukai