Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki

Oracle: Cómo acceder a Oracle con Delphi sin utilizar código fuente
Delphi


Artículo que explica paso a paso (para usuarios iniciados o inexpertos) cómo acceder a una base de datos Oracle mediante Delphi 6 sin utilizar código fuente. Utilizando exclusivamente los componentes de acceso a datos que incluye Delphi y el tipo de conexión ODBC.

Requisitos necesarios para acceder a una base de datos Oracle con Delphi

Para poder realizar una aplicación que acceda a la base de datos Oracle mediante Delphi necesitaremos disponer de lo siguiente:

  • Un equipo con Borland (ahora Codegear) Delphi instalado, será desde el que desarrollemos el software para conexión con Oracle.
  • Un equipo con Oracle Database, en el siguiente enlace se puede ver cómo instalar Oracle 9i en Windows XP, aunque lo que aquí explicamos sirve para cualquier versión de Oracle instalado en cualquier sistema operativo (Windows, GNU Linux, etc.):

Manual para instalar Oracle 9i en Windows con capturas de pantalla

  • El equipo donde queramos que se realice la conexión de la aplicación con Oracle necesitará tener instalado Oracle Client y el driver ODBC de la versión de Oracle a utilizar. En el siguiente artículo explicamos cómo instalar Oracle Client en un equipo con Windows XP como sistema operativo:

Cómo instalar Oracle Client en Windows

  • Las aplicaciones desarrolladas en Delphi requieren del BDE como "puente" entre el ODBC y la aplicación. Puesto que en este ejemplo accedemos a Oracle Database mediante ODBC necesitaremos también Borland Database Engine (BDE), que suele instalarse con Delphi.

Creación del driver ODBC para Oracle

En primer lugar instalaremos el driver ODBC para Oracle, aunque si ya hemos instalado Oracle Client (es necesario) casi con toda seguridad ya tendremos el driver ODBC instalado. De no ser así lo instalaremos descargándolo de la web de Oracle, con Oracle Universal Installer.

Tras instalar el Driver añadiremos un nuevo origen de datos ODBC en el PC que tendrá el acceso a Oracle. Para ello nos situaremos en "Inicio" - "Configuración" - "Panel de Control" - "Herramientas administrativas" - "Orígenes de datos (ODBC)". En la pestaña (o solapa) "DSN de sistema" pulsaremos "Agregar":

AjpdSoft Cómo acceder a Oracle sin utilizar código fuente con Delphi 6 - Creación del driver ODBC para Oracle

Seleccionamos "Oracle en OraHome92" (puede variar el nombre en función de la ruta de instalación o nombre que hayamos indicado) el driver ODBC instalado al instalar Oracle Client y pulsaremos en "Finalizar":

AjpdSoft Cómo acceder a Oracle sin utilizar código fuente con Delphi 6 - Creación del driver ODBC para Oracle

Añadiremos los datos necesarios:

  • Data Source Name: nombre de la fuente de datos, normalmente el nombre de la Base de Datos Oracle con la que queramos conectar, en nuestro caso "AJPDSOFT".
  • Description: breve descripción de la conexión, en nuestro caso "Acceso a Base de datos Oracle AjpdSoft".
  • TNS Service Name: nombre del listener de Oracle que previamente se habrá instalado y configurado mediante la instalación de Oracle Client (cliente de Oracle). Normalmente coincidirá con el nombre de la Base de Datos Oracle. En nuestro caso "AJPDSOFT".
  • User ID: usuario de Oracle con el que nos conectaremos (debe existir). En nuestro caso usaremos el usuario de pruebas "hr".

AjpdSoft Cómo acceder a Oracle sin utilizar código fuente con Delphi 6 - Creación del driver ODBC para Oracle

Una vez añadidos los datos podemos realizar una prueba para verificar que los datos introducidos son correctos, para ello pulsaremos en "Test connection", introduciremos los siguientes datos:

  • Service Name: nombre del servicio de Oracle.
  • User Name: nombre de usuario de Oracle.
  • Password: contraseña del usuario de Oracle.

Introduciremos los datos y pulsaremos "OK":

AjpdSoft Cómo acceder a Oracle sin utilizar código fuente con Delphi 6 - Creación del driver ODBC para Oracle

Si todo es correcto mostrará un mensaje como el siguiente:

AjpdSoft Cómo acceder a Oracle sin utilizar código fuente con Delphi 6 - Creación del driver ODBC para Oracle

    Con el texto: "Connection successful".

Preparando la aplicación Delphi para la conexión con Oracle Database

Crear el acceso a Oracle en Delphi

Una vez instalado Oracle Client y configurado el Driver ODBC procederemos a realizar el acceso a Oracle desde Delphi. Abriremos Delphi, seleccionaremos "File" - "New" - "Application". Añadiremos un módulo de datos (DataModule) en el cual insertaremos las tablas (TTable), consultas (TQuery) y el acceso a la base de datos (TDataBase). Para ello pulsaremos en "File" - "New" - "Data Module". Dentro del Data Module añadiremos un Database (componente no visual que se encuentra en la paleta de componentes, en la pestaña "BDE"):

AjpdSoft Cómo acceder a Oracle sin utilizar código fuente con Delphi 6 - Preparando la aplicación Delphi para la conexión con Oracle Database

Haremos doble clic sobre el Database añadido y nos mostrará la ventana de configuración de los parámetros del Datbase. En "Alias name" seleccionaremos el origen de datos ODBC creado anteriormente, en nuestro caso "AJPDSOFT" y pulsaremos en el botón "Defaults" para que nos añada los parámetros automáticamente:

DATABASE NAME=
USER NAME=
ODBC DSN=AJPDSOFT
OPEN MODE=READ/WRITE
SCHEMA CACHE SIZE=8
SQLQRYMODE=
LANGDRIVER=
SQLPASSTHRU MODE=SHARED AUTOCOMMIT
SCHEMA CACHE TIME=-1
MAX ROWS=-1
BATCH COUNT=200
ENABLE SCHEMA CACHE=FALSE
SCHEMA CACHE DIR=
ENABLE BCD=FALSE
ROWSET SIZE=20
BLOBS TO CACHE=64
PASSWORD=

AjpdSoft Cómo acceder a Oracle sin utilizar código fuente con Delphi 6 - Preparando la aplicación Delphi para la conexión con Oracle Database

En este caso tendremos tres opciones:

  • Añadir los datos de los parámetros manualmente, en especial USER NAME y PASSWORD y desmarcar la opción "Login prompt" (para que nos nos pida el usuario y contraseña pues ya se los habríamos establecido en tiempo de diseño.
  • No rellenar estos parámetros y dejar marcada la opción "Login prompt" (al ejecutar la aplicación nos aparecerá una ventana automática pidiéndonos el nombre de usuario y la contraseña para la conexión a Oracle.
  • Crear nuestro propio formulario de login y establecer estos parámetros por código.

En este caso utilizaremos la segunda opción, pues es más flexible (conexión de distintos usuarios con el mismo programa). Evidentemente esto se puede hacer por código (sería más eficiente) pero hemos de cumplir nuestro objetivo de conectarnos a Oracle sin utilizar ni una sola línea de código fuente.

Por último, para el componente Database, en la propiedad "DatabaseName", introduciremos un nombre que identifique esta conexión en la aplicación, por ejemplo "bdAjpdSoft":

AjpdSoft Cómo acceder a Oracle sin utilizar código fuente con Delphi 6 - Preparando la aplicación Delphi para la conexión con Oracle Database

Para probar la conexión pondremos a "True" la propiedad "Connected", si todo ha ido bien nos aparecerá la ventana de "Database Login". Introduciremos el usuario y contraseña que queramos utilizar para la prueba y pulsaremos en "OK". Si no hay problemas la propiedad "Connected" del Database cambiará a "True":

AjpdSoft Cómo acceder a Oracle sin utilizar código fuente con Delphi 6 - Preparando la aplicación Delphi para la conexión con Oracle Database

Si, por el contrario, hay algún problema de conexión con Oracle esta propiedad seguirá a "False" y se mostrará un mensaje con el error. Por ejemplo introduciendo una contraseña incorrecta aparecerá un mensaje como este:

AjpdSoft Cómo acceder a Oracle sin utilizar código fuente con Delphi 6 - Preparando la aplicación Delphi para la conexión con Oracle Database

Con el texto: "Unknown user name or password. [Oracle][ODBC][Ora]ORA-01017: invalid username/password; logon denied. Alias: bdAjpdSoft".

Componentes de acceso a tablas de Oracle en Delphi

Ahora añadiremos dos componentes más que se enlazarán con el Database anterior, un TTable y un TQuery y dos DataSource que enlazarán con los anteriores respectivamente. El TTable y el TQuery se encuentran en la misma pestaña que el Database de la paleta de componentes, el DataSource se encuentra en la pestaña "Data Access":

AjpdSoft Cómo acceder a Oracle sin utilizar código fuente con Delphi 6 - Preparando la aplicación Delphi para la conexión con Oracle Database

El módulo de datos quedará así:

AjpdSoft Cómo acceder a Oracle sin utilizar código fuente con Delphi 6 - Preparando la aplicación Delphi para la conexión con Oracle Database

Enlazaremos los componentes, para ello modificaremos las propiedades siguientes en cada uno de ellos:

  • Para el Table1:
    • DatabaseName: introduciremos el nombre que le hayamos dado en la propiedad DatabaseName del componente Database, en nuestro caso "bdajpdsoft":

AjpdSoft Cómo acceder a Oracle sin utilizar código fuente con Delphi 6 - Preparando la aplicación Delphi para la conexión con Oracle Database

    • TableName: nombre de la tabla a la que queramos acceder para modificar, eliminar y añadir registros. Cuando pulsemos en el desplegable el componente TTable se conectará a Oracle utilizando el Database al que lo hemos enlazado, es posible que vuelva a pedirnos usuario y contraseña. En el desplegable de las tablas disponibles sólo aparecerán aquellas a las que tenga acceso el usuario seleccionado. En nuestro caso hemos seleccionado una tabla que Oracle incorpora por defecto para el usuario "hr" (también creado por Oracle automáticamente) llamada "EMPLOYEES":

    AjpdSoft Cómo acceder a Oracle sin utilizar código fuente con Delphi 6 - Preparando la aplicación Delphi para la conexión con Oracle Database

    • Active: poniendo a True esta propiedad se establecerá la conexión a la tabla especificada.
  • DataSource1: enlazaremos este componente con el Table1 anterior. Para ello añadiremos a la propiedad Dataset el nombre del Table1 anterior. Este componente será el que enlacemos con el DBGrid para mostrar los datos de la tabla.

AjpdSoft Cómo acceder a Oracle sin utilizar código fuente con Delphi 6 - Preparando la aplicación Delphi para la conexión con Oracle Database

  • Query1: este componente no es neceario para el objetivo de este artículo, sirve para ejecutar sentencias SQL tanto de selección (SELECT) como de modificación de datos (INSERT, UPDATE, DROP, CREATE, ...). En este artículo lo utilizaremos símplemente para realizar una consulta que mostrará los datos de una tabla en un DBGrid.
    • DatabaseName: al igual que el componente Table1, seleccionaremos el Database creado al principio "bdajpdsoft".
    • SQL: en esta propiedad añadiremos la sentencia SQL que queramos utilizar, en nuestro caso: "SELECT * FROM EMPLOYEES" (mostrará todos los campos y registros de la tabla EMPLOYEES).
    • Active: poniendo a "True" esta propiedad se ejecutará la sentencia SQL anterior, si se comete un error de sintaxis en la propiedad SQL al intentar activar el TQuery mostraría un mensaje de error, por ejemplo como este:

AjpdSoft Cómo acceder a Oracle sin utilizar código fuente con Delphi 6 - Preparando la aplicación Delphi para la conexión con Oracle Database

  • DataSource2: enlazaremos este componente con el Query1 anterior. Para ello añadiremos a la propiedad Dataset el nombre del Query1 anterior. Este componente será el que enlacemos con el DBGrid para mostrar los datos de la consulta SQL del Query1.

Añadir componentes visuales para mostrar los datos de la tabla Oracle en la aplicación Delphi

Ahora abriremos el Form1 (formulario que se crea automáticamente al crear la aplicación), tras abrirlo pulsaremos en "File" - "Use Unit" y seleccionaremos el Data Module llamado en nuestro caso "Unit2":

AjpdSoft Cómo acceder a Oracle sin utilizar código fuente con Delphi 6 - Preparando la aplicación Delphi para la conexión con Oracle Database

De esta forma "enlazaremos" el Form1 con el "DataModule2" (módulo de datos donde hemos alojado las tablas, consultas y bases de datos).

Añadiremos al formulario dos componentes DBGrid que están en la pestaña "Data Controls" de la paleta de componentes, el primero DBGrid1 se enlazará con el Table1 y el segundo DBGrid2 se enlazará al Query1. Para enlazarlos utilizaremos la propiedad "DataSource", estableciendo el valor "DataModule2.DataSource1":

AjpdSoft Cómo acceder a Oracle sin utilizar código fuente con Delphi 6 - Preparando la aplicación Delphi para la conexión con Oracle Database

Una vez enlazado, se mostrarán los datos directamente en tiempo de diseño, esto es debido a que hemos puesto la propiedad "Active" del Table1 a True. Lo más eficiente sería que esta propiedad estuviese a "False" y mediante una línea de código la pusiéramos a "True" tras iniciar la aplicación, pero, una vez más, esto incumpliría nuestros objetivos de no utilizar código fuente.

Haremos lo mismo con el DBGrid2, selecionando en DataSource el DataSource2 del módulo de datos, el cual estará enlazado con el Query1:

AjpdSoft Cómo acceder a Oracle sin utilizar código fuente con Delphi 6 - Preparando la aplicación Delphi para la conexión con Oracle Database

Compilación y prueba de la aplicación en funcionamiento

Por último compilaremos la aplicación pulsando F9 o desde el menú "Run" - "Run" y veremos el resultado (nos pedirá usuario y contraseña):

AjpdSoft Cómo acceder a Oracle sin utilizar código fuente con Delphi 6 - Preparando la aplicación Delphi para la conexión con Oracle Database

En el grid de arriba (el que enlaza con el Table1) podremos probar a insertar (pulsando la tecla Insert), modificar (escribiendo directamente sobre el campo y registro a modificar) y eliminar registros (pulsanod Control + Sup) siempre y cuando las reglas de integridad referencial y los permisos del usuario lo permitan.

En cambio, el grid de abajo (el que enlaza con el Query1) no es modificable, es de sólo lectura, pues proviene de una consulta SQL.

Por supuesto este formulario es mejorable, por ejemplo añadiendo un DBNavigator (barra de botones que incorpora Delphi para modificar, eliminar, añadir registros, actualizar los datos, ir al principio, último, anterior y siguiente, ...), que nos permitirá realizar una serie de acciones a la tabla que lo enlacemos sin añadir código fuente. Añadiremos este componente y lo enlazaremos mediante la propiedad "DataSource" a la tabla de Oracle que queramos (TTable o TQuery):

AjpdSoft Cómo acceder a Oracle sin utilizar código fuente con Delphi 6 - Preparando la aplicación Delphi para la conexión con Oracle Database

Con esto sería suficiente para visualizar y modificar tablas de Oracle sin código fuente. Pero, lógicamente, no es la forma idónea para hacerlo pues no se controlan determinados errores que se puedan producir tales como introducción de fechas, números, etc. Pero con este artículo demostramos que, sin duda alguna, Delphi es uno de los lenguajes de programación de alto nivel más eficientes para realizar aplicaciones de acceso a base de datos.

Descarga freeware del código fuente del ejemplo de acceso de Delphi a Oracle con ODBC

Para descargar el código fuente (source code) 100% open source de este ejemplo, puedes registrarte gratuitamente aquí y podrás descargar el código fuente completo (Source Code - Open Source) de la aplicación en esta URL:

Acceso a Oracle mediante Delphi sin utilizar código fuente

ANEXO

Tecnologías empleadas para realizar este artículo

Hemos utilizado un único equipo con las siguientes características:

  • Procesador Quad core con 1.3 GHz/core.
  • 2 GB de memoria RAM.

Para realizar este manual se ha utilizado Borland Delphi 6, Oracle Database 9i y Microsoft Windows XP Professional.

Acceso a otros motores de base de datos con Delphi y ODBC

Para este artículo hemos utilizado Oracle 9i, pero este ejemplo serviría para cualquier motor de base de datos que admita conexión por driver ODBC (Oracle, MySQL, Microsoft SQL Server, PostgreSQL, IBM DB2, Informix, Microsoft Access, Paradox, DBase, Ingres, SQLite, etc). Para ello será suficiente con instalar el cliente (en caso necesario) y el origen de datos ODBC correspondiente al motor utilizado. El resto de los pasos es similar.

La gran ventaja de utilizar ODBC es que la aplicación se hace casi transparente al motor de base de datos utilizado, por lo que podremos cambiar de un motor de base de datos a otro casi sin modificar el código fuente. Incluso podremos preparar nuestra aplicación para que el usuario pueda elegir el motor de base de datos a utilizar.

En cambio, el acceso nativo, si bien suele ser más rápido y eficiente, presenta el inconveniente de que las aplicaciones con acceso nativo a un motor de base de datos concreto suelen ser más difíciles de adaptar para que utilicen otro motor. A veces hay que cambiar todos los componentes de acceso a datos o incluso parte del código. Además, el acceso nativo implica el uso de componentes adicionales de terceros que en algún momento pueden dejar de publicar nuevas versiones y por ello soporte para las nuevas versiones de los motores de bases de datos (Oracle, MySQL, Firebird, PostgreSQL, SQLite).

Artículos relacionados

Créditos

Artículo realizado íntegramente por Alonsojpd miembro fundador del proyecto AjpdSoft.



Nota: Revisado por AjpdSoft el 05-04-2011.
Revisado por AjpdSoft el 02-10-2009.

Anuncios


Enviado el Jueves, 19 mayo a las 21:17:25 por ajpdsoft
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A