Está en la página 1de 9

Administracin y Optimizacin de Bases de Datos Oracle

Copyright 1999-2004

Manuel de la Herrn Gascn

Acceso a Bases de Datos Oracle mediante Visual Basic


Ejemplo 1 Este ejemplo realiza una consulta a una base de datos oracle mediante DAO (Microsoft DAO 3.51 Object Library) y ODBC. Para ejecutarlo correctamente se deben seguir los siguientes pasos: 1. Guardar todos los archivos de este programa ejemplo (*.vbp, *.frm, *.bas) en alguna carpeta del disco duro 2. Instalar en el cliente los drivers de ODBC de Oracle, por ejemplo instalando un cliente oracle (SQL * Plus...) 3. Ir al panel de control

4. Ira ODBC

5. En la pestaa DSN de sistema, pulsar "Agregar"

6. Seleccionar "Oracle ODBC Driver" y pulsar "Finalizar"

7. Escribir algn identificativo en "Data Source Name" y pulsar "OK"

8. Ejecutar el proyecto Visual Basic 9. Si la conexin es a la base de datos por defecto, el parmetro "Connect" del OpenDatabase puede especificarse como:

DSN=oracle;odbc;uid=scott;pwd=tiger
10. Si la conexin es a una base de datos remota, el parmetro "Connect" del OpenDatabase puede especificarse como:

DSN=oracle;odbc;database=ORCL@tcploopback;uid=scott;pwd=tiger
11. donde tcp-loopback es un identificativo de cadena de conexin del fichero tnsnames.ora Tcp-loopback.world = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (Host = 127.0.0.1) (Port = 1521) ) ) (CONNECT_DATA = (SID = ORCL) ) ) Cdigo fuente A continuacin se muestra el cdigo de los ficheros que componen el proyecto

dao_ora.vbp Type=Exe Reference=*\G{00025E01-0000-0000-C000-000000000046}#4.0#0#C:\Archivos de programa\Archivos comunes\Microsoft Shared\DAO\DAO350.DLL#Microsoft DAO 3.51 Object Library Form=dao_ora.frm Startup="frm_dao_ora" HelpFile="" Command32="" Name="dao_ora" HelpContextID="0" CompatibleMode="0" MajorVer=1 MinorVer=0 RevisionVer=0 AutoIncrementVer=0 ServerSupportFiles=0 VersionCompanyName="Universidad de Deusto" CompilationType=0 OptimizationType=0 FavorPentiumPro(tm)=0 CodeViewDebugInfo=0 NoAliasing=0 BoundsCheck=0 OverflowCheck=0 FlPointCheck=0 FDIVCheck=0 UnroundedFP=0 StartMode=0 Unattended=0 ThreadPerObject=0 MaxNumberOfThreads=1 dao_ora.frm VERSION 5.00 Begin VB.Form frm_dao_ora Caption = "frm_dao_ora" ClientHeight = 1395 ClientLeft = 60 ClientTop = 345 ClientWidth = 3465 LinkTopic = "vb0001_1" ScaleHeight = 1395 ScaleWidth = 3465 StartUpPosition = 3 'Windows Default End Attribute VB_Name = "frm_dao_ora" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Option Explicit Dim db1 As Database Private Sub Form_Load() Dim rs1 As Recordset 'Set db1 = OpenDatabase("oracle", False, False, "DSN=oracle;odbc;database=ORCL@tcp-loopback;uid=scott;pwd=tiger") Set db1 = OpenDatabase("oracle", False, False,

"DSN=oracle;odbc;uid=scott;pwd=tiger") Set rs1 = db1.OpenRecordset("emp", dbOpenSnapshot) MsgBox rs1(0) & "-" & rs1(1) & "-" & rs1(2) rs1.MoveNext MsgBox rs1("EMPNO") & "-" & rs1("ENAME") & "-" & rs1("JOB") rs1.MovePrevious MsgBox rs1("EMPNO") & "-" & rs1("ENAME") & "-" & rs1("JOB") End End Sub Ejemplo 2 Este ejemplo realiza una consulta a una base de datos oracle mediante RDO (Microsoft Remote Data Object 2.0) y ODBC. Para ejecutarlo correctamente se deben seguir los siguientes pasos: 1. Guardar todos los archivos de este programa ejemplo (*.vbp, *.frm, *.bas) en alguna carpeta del disco duro 2. Instalar en el cliente los drivers de ODBC de Oracle, por ejemplo instalando un cliente oracle (SQL * Plus...) 3. Ir al panel de control

4. Ira ODBC

5. En la pestaa DSN de sistema, pulsar "Agregar"

6. Seleccionar "Oracle ODBC Driver" y pulsar "Finalizar"

7. Escribir algn identificativo en "Data Source Name" y pulsar "OK"

8. Ejecutar el proyecto Visual Basic 9. Si la conexin es a la base de datos por defecto, el parmetro "Connect" del OpenDatabase puede especificarse como:

DSN=oracle;odbc;uid=scott;pwd=tiger
10. Si la conexin es a una base de datos remota, el parmetro "Connect" del OpenDatabase puede especificarse como:

DSN=oracle;odbc;database=ORCL@tcploopback;uid=scott;pwd=tiger
11. donde tcp-loopback es un identificativo de cadena de conexin del fichero tnsnames.ora Tcp-loopback.world = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (Host = 127.0.0.1) (Port = 1521) ) ) (CONNECT_DATA = (SID = ORCL) ) ) Cdigo fuente A continuacin se muestra el cdigo de los ficheros que componen el proyecto

rdo_ora.vbp Type=Exe Reference=*\G{EE008642-64A8-11CE-920F08002B369A33}#2.0#0#C:\WINNT\System32\msrdo20.dll#Microsoft Remote Data Object 2.0 Module=bas_rdo_ora; rdo_ora.bas Startup="Sub Main" HelpFile="" Command32="" Name="rdo_ora" HelpContextID="0" CompatibleMode="0" MajorVer=1 MinorVer=0 RevisionVer=0 AutoIncrementVer=0 ServerSupportFiles=0 VersionCompanyName="Universidad de Deusto" CompilationType=0 OptimizationType=0 FavorPentiumPro(tm)=0 CodeViewDebugInfo=0 NoAliasing=0 BoundsCheck=0 OverflowCheck=0 FlPointCheck=0 FDIVCheck=0 UnroundedFP=0 StartMode=0 Unattended=0 ThreadPerObject=0 MaxNumberOfThreads=1 rdo_ora.bas Attribute VB_Name = "bas_rdo_ora" Option Explicit Global rdoEnvironment1 As rdoEnvironment Global rdoConnection1 As rdoConnection Sub main() Dim rs1 As rdoResultset Set rdoEnvironment1 = rdoEngine.rdoEnvironments(0) Set rdoConnection1 = rdoEnvironment1.OpenConnection("oracle", False, True, "DSN=oracle;odbc;database=ORCL@tcploopback;uid=scott;pwd=tiger") 'Set rdoConnection1 = rdoEnvironment1.OpenConnection("oracle", False, True, "DSN=oracle;odbc;uid=scott;pwd=tiger") Set rs1 = rdoConnection1.OpenResultset("select * from emp") ' por defecto es forward-only MsgBox rs1(0) & "-" & rs1(1) & "-" & rs1(2) rs1.MoveNext MsgBox rs1("EMPNO") & "-" & rs1("ENAME") & "-" & rs1("JOB") 'rs1.MovePrevious 'Esta instruccion producira un error porque el tipo de rs1 es forward-only Set rs1 = rdoConnection1.OpenResultset("select * from emp", rdOpenStatic) MsgBox rs1(0) & "-" & rs1(1) & "-" & rs1(2) rs1.MoveNext MsgBox rs1(0) & "-" & rs1(1) & "-" & rs1(2)

rs1.MovePrevious MsgBox rs1(0) & "-" & rs1(1) & "-" & rs1(2) Set rs1 = rdoConnection1.OpenResultset("select * from emp", rdOpenKeyset) MsgBox rs1(0) & "-" & rs1(1) & "-" & rs1(2) End End Sub