miércoles, 23 de mayo de 2012

Mis primeras lineas de codigo

C# y Oracle Parte 1.Configurar una conexión a Oracle

librerías utilizadas en el transcurso del programa.

using Oracle.DataAccess.Client;

Nota. Para poder utilizar la librería Oracle.DataAccess.Client, primero debe instalar el Oracle Data Provider para .Net

Iniciamos Visual Studio 2008 damos click en la pestaña Archivo, luego en nuevo y luego en Proyecto. esto nos presentara una nueva pantalla como esta:


En esta pantalla seleccionamos la plantilla Aplicación de consola, en el campo nombre: escribimos Conexion_Oracle
en el campo ubicación definimos el lugar donde deseamos almacenar el programa. en mi caso sera c:\Sistemas\mi blog y presionamos el botón Aceptar.

Aparecerá una pantalla como esta:



Una vez que se tenga instalado el Data Provider para oracle, se debe agregar la referencia a nuestro proyecto, para esto nos vamos al explorador de soluciones en el apartado References y damos click sobre el icono. 



Una vez que se haya agregado la referencia al Dll de Oracle, debemos incluirla en nuestro programa así:




Existen varias formas de conectarnos con una base de datos Oracle. en esta ocasión utilizaremos una cadena de conexión similar a las definidas en los tnsnames.ora. En la cual se determina mediante el Data Source la información necesaria para realizar la conexión.

Para esto necesitaremos definir las siguientes variables:

* usuario: variable de tipo string que define el nombre del usuario registrado en la base de datos.
* password: variable de tipo string que define el password del usuario registrado en la base de datos.
* ds: variable de tipo string que contiene la estructura del Data Source del tnsnames.ora
* conexion: variable de tipo string que contiene la instrucción necesaria para realizar llevar a cabo nuestra conexion.
*con:variable de tipo OracleConnection que se encargara de instanciar y realizar la conexión.

en esta ocasión utilizaremos unas variables que se encargaran de definir la ubicación por consola de los mensajes que se presentaran a los usuarios. estas variables son:
*pos_x : variable de tipo int que se encargara de ubicar el cursor sobre el eje x de la consola.
*pos_y : variable de tipo int que se encargara de ubicar el cursor sobre el eje y de la consola.

agregando estas variables tendremos nuestro código de esta manera:



ahora crearemos unos métodos que se encargaran de capturar por pantalla la información requerida para realizar nuestra conexión para esto crearemos un primer método que se llamara private void _usuario() el cual se encargara de capturar por pantalla el nombre del usuario, y almacenar este nombre en nuestra variable usuario. el método quedara de esta manera:


        private static void _usuario()
        {
            Console.WriteLine("Usuario : ");
            usuario = Console.ReadLine();
        }

luego creamos un método llamado private void _password() el cual se encargara de capturar por pantalla el password del usuario y almacenarlo en la variable password.


        private static void _password()
        {
              Console.WriteLine("Password : ");
              password = Console.ReadLine();
        }


Ahora crearemos un método llamado private static void _con(string _usuario, string _password) el cual se encargara de construir nuestra conexión a Oracle.


        private static void _con(string _usuario, string _password)
        {
              ds = @";Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)                  
                                          (HOST=192.168.39.185)(PORT=1521))(CONNECT_DATA=
                                          (SERVICE_NAME=PRUEBAS)));";
            conexion = "User Id=" + usuario + ";Password=" + password + ds;
            con = new OracleConnection(conexion);
        }

  • En la variable ds agregamos la información perteneciente al Data Source similar a la información que se encuentra en las tnsnames.ora.
  • en este método lo que estamos haciendo es crear en nuestra variable conexion la instrucción necesaria para poder conectarnos a Oracle
  • Creamos el objeto con de tipo OracleConnection y le enviamos como parámetro en su constructor la variable conexión que ya tiene asociada entre otras características el nombre, el password, la dirección ip, el nombre de la base de datos, el puerto de conexión. entre otros datos.

Por ultimo acondicionamos nuestro método principal static void Main(string[] args) para enlazar a los otros métodos y poder finalmente realizar nuestra conexión. Nuestro método debe quedar así:

        static void Main(string[] args)
        {
            _usuario();//este método nos captura y devuelve el nombre del usuario
            _password();//este metodo nos captura y devuelve el password del usuario
            _con(usuario, password);//este método crea una instancia del objeto OracleConnection 
            try
            {
                con.Open();//Con esta instruccion abrimos la conexion a la base de datos
                Console.WriteLine("Conexión exitosa");
                Console.ReadLine();
            }
            catch (OracleException ex)
            {
                Console.WriteLine("Se ha presentado un error durante la conexion a la base de datos. " +   
                                                ex.Message.ToString());
                throw;
            }
            finally
            {
                con.Close();
            }
        }

para compilar presionamos la tecla f6 y validamos que no existen errores.
para correr nuestro programa presionamos la tecla f5 y nos debe aparecer una pantalla como esta:



Espero este ejercicio les haya colaborado en algo.

A continuacion les dejo el codigo del ejercicio anterior con algunas caracteristicas adicionales para darle mas formalidad a nuestro codigo.



//librerias utilizadas en este programa
using System;
using System.Text;
using Oracle.DataAccess.Client;

namespace Conexion_Oracle
{
    /// <summary>
    /// Nombre de la clase principal
    /// </summary>
    /// <remarks>
    /// Esta clase contiene todos los metodos y atributos necesarios para realizar una conexion a una base de datos Oracle.
    /// </remarks>
    class Program
    {
        #region Definicion del bloque de variables globales
        private static string ds;//Esta variable almacena la direccion ip, el SID y el numero del puerto donde se publica la bd Oracle
        private static string usuario;//Esta variable almacena el nombre del usuario registro en la bd Oracle
        private static string password;//Esta variable almacena la contraseña del usuario registrado
        private static string conexion;//Esta variable se encargara de armar la estructura necesaria para abrir una conexion a la bd.
        private static OracleConnection con;//Este objeto permite la conexion a la base de datos de oracle
        private static int pos_x;//Controlamos la posicion en el eje x del cursor en la consola
        private static int pos_y;//Controlamos la posicion en el eje y del cursor en la consola
        #endregion fin de la Definicion del bloque de variables globales

        #region Definicion del metodo static void Main(string[] args)
        /// <summary>
        /// Metodo principal
        /// </summary>
        /// <remarks>
        /// Este es el metodo principal desde donde se enlacen las demas conexiones
        /// </remarks>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            pos_x = 0;//controlamos la posicion del cursor en la consola en el eje x
            pos_y = 0;//controlamos la posicion del cursor en la consola en el eje y          
            _usuario();//este metodo nos captura y devuelve el nombre del usuario
            _password();//este metodo nos captura y devuelve el password del usuario
            _con(usuario, password);//este metodo crea una instancia del objeto OracleConnection listo para ser usado
            try
            {
                con.Open();//Con esta instruccion abrimos la conexion a la base de datos
                pos_x = 2;//controlamos la posicion del cursor en la consola en el eje x
                pos_y += 2;//controlamos la posicion del cursor en la consola en el eje y
                Console.SetCursorPosition(pos_x, pos_y);//Ubicamos el cursor en la posicion deseada
                Console.WriteLine("Conexion exitosa");//presentamos un mensaje informando que la conexion fue exitosa
                Console.ReadLine();
            }
            catch (OracleException ex)
            {
                Console.WriteLine("Se ha presentado un error durante la conexion a la base de datos. " + ex.Message.ToString());
                throw;
            }
            finally
            {
                con.Close();
            }
        }
        #endregion fin de la Definicion del metodo static void Main(string[] args)

        #region Definicion del metodo private static void _usuario()
        /// <summary>
        /// Este metodo se encarga de capturar el nombre del usuario desde la consola
        /// </summary>
        private static void _usuario()
        {
            pos_x += 2;
            pos_y += 2;
            Console.SetCursorPosition(pos_x, pos_y);
            Console.WriteLine("Usuario : ");
            pos_x += 10;
            Console.SetCursorPosition(pos_x, pos_y);
            usuario = Console.ReadLine();
        }
        #endregion fin de la Definicion del metodo private static void _usuario()

        #region Definicion del metodo private static void _password()
        /// <summary>
        /// Este metodo captura el password por consola
        /// </summary>
        private static void _password()
        {
            pos_x = 2;
            pos_y += 2;
            Console.SetCursorPosition(pos_x, pos_y);
            Console.WriteLine("Password : ");
            pos_x += 12;
            Console.SetCursorPosition(pos_x, pos_y);
            ConsoleKeyInfo info = Console.ReadKey(true);
            while (info.Key != ConsoleKey.Enter)
            {
                Console.Write("*");
                password += info.KeyChar;
                info = Console.ReadKey(true);
            }
        }
        #endregion fin de la Definicion del metodo private static void _password()

        #region Definicion del metodo private static void _con(string _usuario, string _password)
        /// <summary>
        /// Este metodo crea una instancia del objeto OracleConnection con la informacion necesaria para ser utilizado
        /// </summary>
        /// <param name="_usuario"></param>
        /// <param name="_password"></param>
        private static void _con(string _usuario, string _password)
        {
            ds = @";Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.39.185)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=PRUEBAS)));";
            conexion = @"User Id=" + usuario + ";Password=" + password + ds;//creamos la estructura para la conexion
            con = new OracleConnection(conexion);

        }
        #endregion fin de la Definicion del metodo private static void _con(string _usuario, string _password)
    }
}




saludos cordiales



FEML.