Megaexpertos de Oracle: ¡VENID A MÍ!
Hola a todos, seguro que entre nosotros hay más de un sapientín de Oracle y sus bases de datos. Pues si me pudiérais ayudar a esto me haríais un gran favor.
Necesito, antes de conectar con la base de datos, ser capaz de leer el fichero TNSNAMES.ORA de algún modo para sacar los alias de las conexiones que contiene. Es algo similar a lo que hace el TOAD justo en la pantalla de login antes de conectarnos, que muestra todas las bases de datos posibles en un desplegable.
La idea original era extraer del registro del sistema la la ubicación del archivo, abrirlo y recorrerlo para obtener lo que deseo, pero es un follón. ¿Alguién tiene algún código que lo haga? No me importa el lenguaje. O, lo que sería aún mejor, ¿hay alguna herramienta Oracle, API o similar que nos ayude en dicho menester?
Perdonar el rollo, pero me hace falta. :inaudito
Gracias!
Re: Megaexpertos de Oracle: ¡VENID A MÍ!
De Oracle no se mucho, la verdad, pero ome... codigo para buscar una clave en el registro de windows hay un monton, echale un ojo a la pagina de elguille, tu sabes ;) (ahi encontraras librerias completas y muy buenas para editar, isertar y borrar claves del registro) y una vez que tengas el path del fichero, solo tienes que abrirlo, leerlo y cargar el combo... todo eso en C# no son mas de 50 lineas de codigo :) (y quizas esté pasandome de lineas).
Re: Megaexpertos de Oracle: ¡VENID A MÍ!
Gracias Ice. De este modo más o menos sabemos hacerlo. Incluso sabemos la ruta del registro que debemos mirar. Pero nos da mucha pereza recorrer el fichero si ya existiera alguna utilidad que nos lo hiciera.
Es que me extraña mucho que Oracle no tenga nada para eso. :|
Gracias de nuevo.
Re: Megaexpertos de Oracle: ¡VENID A MÍ!
Pues no pides na!
No conozco mucho oracle a ese nivel, pues no soy desarrollador, pero generalmente en $HOME_ORACLE/OCI tienes interfaces a las DLL de la libreria cliente (ficheros .h con tipos y prototipos de funciones). Echa un vistazo a ver si alguna de estas librerias tiene la funcion de parse del tnsnames.ora .
Si además puedes ejecutar un tnsping en modo debug (desconozco las herramientas) igual cazas la función, pues de las primeras cosas que debe hacer es el parse.
De todas formas la sintaxis del tnsnames.ora es tan simple que para lo que quieres hacerlo a pedales parece facil "alias=(....)". No hace falta ni entrar a gramáticas (lex/yacc).
Suerte.
Re: Megaexpertos de Oracle: ¡VENID A MÍ!
Gracias a ambos, tendré que hacerlo así, de todos modos es más complejo pues el signo = no solo se usa detrás del alias. Pero no importa, se puede sacar así. :agradable