1 Visual Basic - Guía del Estudiante Apuntes finales sobre bases de datos y Visual Basic Bases de Datos SQL Server y Oracle Las bases de datos más conocidas de las utilizadas en plataforma Windows son posiblemente Oracle y SQL Server. Cualquier programador conoce al menos unas de ellas. Queremos explicar aquí los pasos que hay que realizar para poder “ver” la base de datos y trabajar con ella desde Visual Basic. Una base de datos de esta categoría va a estar instalada con toda seguridad en un servidor, y accederemos a ella desde otro ordenador, que será el cliente. Puede estar instalada si lo desea en el mismo ordenador, pero en ese caso deberá tratarlo como si su ordenador trabajase al tiempo como servidor y como cliente. La instalación de la base de datos dentro del servidor es bastante compleja, y no se va a explicar en este curso. Se supone que el suministrador de la BD explicará como hacerlo. La instalación de SQL Server exige que se haga sobre un PC o Net Server que tenga Windows 2000 Server (o NT Server), sistema operativo que no se suele instalar en los PCs de cliente y mucho menos en los PC domésticos. Oracle dispone de una versión con prestaciones algo reducidas que le permite instalarla en un puesto con Windows 98, en configuración monousuario, circunstancia que permite hacer pruebas de funcionamiento en PCs particulares, pero que no es la instalación típica que puede existir en una organización o empresa. Nos referiremos siempre en este capítulo a la instalación convencional, de un servidor donde se aloja la base de datos, y una serie de puestos clientes conectados a él mediante Red de Area Local. En la base de datos es necesario introducir los nombres de usuario que están permitidos, y la clave de acceso para cada usuario. Lógicamente para que un puesto pueda acceder a la BD debe conocer su nombre de usuario y la clave de acceso. Estos datos normalmente se introducen en el cliente en su configuración, y no es necesario teclearlas cada vez que se inicia una sesión. La configuración del sistema de la base de datos es la de cliente - servidor. El servidor tiene un programa que es el Gestor de la Base de Datos. La base de datos propiamente dicha estará formada por uno o más ficheros con los datos que tienen introducidos y la estructura de tablas, consultas e índices que tenga. El programa gestor es quien controla estos ficheros y puede obtener de ellos los datos en una forma adecuada. El cliente necesita tener un programa que será el que se comunique con el programa gestor que está en el servidor. Este programa lo realiza el mismo fabricante de la base de datos y se distribuye en el mismo disco que el programa servidor y el resto del sistema. A esta parte de la aplicación cliente – servidor que se instala en cada cliente se le llama Componentes de Conectividad. Y la misión de estos componentes de conectividad es servir de intermediario entre el gestor de la base de datos instalado en el servidor, y el programa que en el equipo cliente va a manejar los datos de esa base de datos. Este programa que va a manejar los datos puede ser el Administrador Corporativo de SQL Server, el Developper 2000 de Oracle, o una aplicación realizada por nosotros en Visual Basic. Pero el funcionamiento es siempre el mismo, el programa que va a manejar los datos en el cliente conecta con el programa Componentes de Conectividad y es este quien conecta con el Gestor de la Base de Datos para que realice la operación que tenga que realizar y le devuelva, si ha lugar, la información extraída de la base de datos. Por lo tanto para poder trabajar desde un cliente con la base de datos, es necesario que en el servidor esté corriendo el programa gestor de la base de datos, y en el cliente, que estén instalados los componentes de conectividad. Los componentes de conectividad, tal como se dijo más atrás, están fabricados por el mismo fabricante de la BD, pero no se extrañe si encuentra algún programa fabricado por otro Manuel de Visual Basic 2 fabricante. Para Oracle hay varios fabricantes que han realizado un producto de este tipo. No es difícil, ya que al tratarse de una aplicación cliente – servidor, lo único importante es el protocolo de comunicación entre el programa gestor de la BD y los componentes de conectividad. Vea el capitulo correspondiente a aplicaciones cliente –servidor para más detalles. Instalación de los componentes de conectividad para SQL Server Para instalar los componentes de conectividad de SQL Server en un puesto cliente basta con introducir el disco de distribución de SQL Server y dejar que se ejecute el Autorun. Se le indica que instale el servidor de bases de datos. Al darse cuenta que no tiene Windows 2000, dice que no puede instalar más que los componentes del cliente. Deje que siga la instalación aceptando todos los aviso que se produzcan. Llegará a esta ventana: SQL Server tiene dos discos, Standard y Profesional. El Profesional le permite hacer instalaciones en equipos remotos, y en ese caso estaría la opción Equipo Remoto habilitada. No es nuestro caso, ya que solamente debemos instalar en el equipo local. Siga la instalación en la que en sucesivas ventanas le aparecerá la opción: “Crear una nueva instancia de SQL Server o instalar herramientas de cliente”. Acepte esa opción. A continuación le pide el nombre y contraseña. Se refiere a la del equipo, no al de la base de datos. Acepte. Llegará a la ventana siguiente: Manuel de Visual Basic 3 En esta ventana puede elegir instalar Solo conectividad (es lo que necesita para que un programa realizado en visual basic funcione), Solo herramientas cliente (le instalará, además de la conectividad, el Administrador Corporativo, Analizador de consultas, y otras herramientas de SQL Server. El Administrado Corporativo es la interfase que SQL Server suministra para ver la base de datos, tanto la estructura como los datos. No es necesario para que funcione una aplicación realizada en Visual Basic, que lo único que necesita es conectarse a través de los Componentes de Conectividad. Vaya aceptando todas las ventanas y la instalación terminará con éxito. Una vez instalada la conectividad debe asegurarse que desde el cliente ve al servidor y que no está cerrado el paso al puerto 1433 mediante algún Firewall u otro dispositivo. Ya puede trabajar con la base de datos SQL Server. Posiblemente le surja una pregunta ¿Contra que base, en qué servidor, con qué usuario y clave de acceso? Con lo Ud. ponga en el programa de Visual Basic en la propiedad ConnectionString del objeto Connection de ADO. Vea un ejemplo real: ConexRAEN.ConnectionString = "Provider=SQLOLEDB.1;Password=lsuarez;Persist Security Info=True;User ID=lsuarez;Initial Catalog=Ayudas_M;Data Source=seae_sql" Aquí tienen todos los datos necesarios para conocer todas las preguntas que se hacía antes: Provider=SQLOLEDB.1 Data Source=seae_sql Initial Catalog=Ayudas_M User ID=lsuarez Password=lsuarez Persist Security Info=True Nombre del proveedor de datos Nombre del servidor donde está la base de datos. Nombre de la base de datos contra la que se abre la conexión. Nombre de Usuario Clave de acceso ¿ Manuel de Visual Basic 4 Instalación de la conectividad de Oracle Para instalar la conectividad de Oracle ocurre algo parecido a SQL Server. Le recomiendo que se instruya adecuadamente con los manuales de Oracle para su correcta instalación. No es complicado, pero este autor no conoce Oracle como SQL Server. Con el disco Oracle 7 Client Software (He empleado la versión 7.3.4.0.0) introduzca el CD-Rom y deje que se ejecute el Autorun. Le aparecerá esto. Acepte Le pide el idioma: Le van apareciendo sucesivas ventanas en una le pide el directorio donde quiere instalar el programa, en otra le pide permiso para cambiar una línea del Autoexec, etc. Acepte los valores hasta que la instalación se haya realizado por completo. Una vez terminada verá que le ha creado una carpeta llamada Orant que puede ver expandida en esta figura. En \Orant\Network\Admin tiene un fichero llamado Sqlnet.Ora que contienen algo como esto. AUTOMATIC_IPC = OFF TRACE_LEVEL_CLIENT = OFF names.directory_path = (TNSNAMES) names.default_domain = world name.default_zone = world Fíjese en la línea names.directory_path = (TNSNAMES) Esta línea indica que el fichero TNSNAMES.ORA que está en la misma carpeta contiene el fichero de configuración de SQL Net. Contiene varios ejemplos, que le pueden servir para configurar la conexión a su servidor. El contenido de ese fichero en mi PC es esto: Manuel de Visual Basic 5 #Este es un fichero de Configuración de SQL*Net generado por la Configuración Rápida de SQL*Net. #Atención: No modifique este fichero. #Si lo hace, la Configuración Rápida de SQL*Net puede no funcionar correctamente. Tcp-loopback.world = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (COMMUNITY = tcp.world) (PROTOCOL = TCP) (Host = 127.0.0.1) (Port = 1521) ) ) (CONNECT_DATA = (SID = ORCL) ) ) Beq-Local.world = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (COMMUNITY = beq.world) (PROTOCOL = BEQ) (PROGRAM = oracle73) (ARGV0 = oracle73ORCL) (ARGS = '(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))') ) ) (CONNECT_DATA = (SID = ORCL) ) ) Intranet.world = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (COMMUNITY = tcp.world) (PROTOCOL = TCP) (Host = 10.3.22.4) (Port = 1521) ) (ADDRESS = (COMMUNITY = tcp.world) (PROTOCOL = TCP) (Host = 10.3.22.4) (Port = 1526) ) ) (CONNECT_DATA = (SID = SEUE2) ) ) La parte que afecta a la aplicación en la que me conecto con Oracle es la que comienza por la linea: Intranet.world = Los datos son reales. Pero he de manifestar que no conozco Oracle tan bien como para explicarlo, y que la instalación la hizo personal de una distribuidora de Oracle. De cualquier Manuel de Visual Basic 6 forma puede verse que está definiendo la conexión Intranet , que tienen el Host en la dirección 10.3.22.4 y el puerto de comunicación es el 1521, con una segunda alternativa en el puerto 1526. Le recomiendo que si su caso es una conexión a Oracle se informe mejor de la configuración de sus clientes. Es de suponer que los técnicos de Oracle le resuelvan las grandes dudas que le pueden surgir por las escasa explicaciones de este curso…de Visual Basic. Visual Basic con el que se escribió estas líneas para crear una conexión ADO con esa base de datos: Set ConexBDPrensa = New ADODB.Connection ConexBDPrensa.ConnectionString = "Provider=MSDAORA.1;User ID=INTRANET;” & _ “Password=INTRANET;Data Source=intranet;Persist Security Info=False" ConexBDPrensa.Open El parámetro Data Source=intranet es el que emplea la conectividad de Oracle para buscar en el fichero TNSNAMES.ORA la dirección del Host y el puerto empleado. Puede darse cuenta que tanto en SQL Server como en Oracle estamos empleando conexiones ADO. Podría hacerse también mediante RDO, creando un enlace ODBC (Para poder crear ese enlace ODBC también es necesario instalar previamente la conectividad). Pero ODBC es una tecnología que ya está considerada obsoleta, por lo que prescindimos de cualquier ejemplo. Se sale necesariamente de este curso una explicación más profunda de estas dos bases de datos. Manuel de Visual Basic