lunes, 10 de diciembre de 2012

Insertar Datos en Mysql y Oracle desde C#

Bien siguiendo con el tutorial anterior haremos un ejemplo de como insertar datos a estos 2 gestores usando parámetros en las inserciones y evitando concatenar la consulta.

Haremos uso del proyecto anterior que tiene la conexión hacia Oracle y Mysql el primer paso es crear la base de datos en el caso de Oracle crear la tabla dentro del esquema y en Mysql crear la tabla en una base de datos existente.

Tenemos que crear 4 carpetas mas las cuales son: las utilidades del proyecto las entidades de la base de datos ,los controladores y las vistas.He organizado el proyecto con el patron de desarrollo MVC.Para que separemos las capas de la aplicacion y sea mas facil y ordenado su desarrollo y sus modificaciones posteriores.Y si tambien se puede usar en aplicaciones de escritorio.no lo explicare a fondo MVC en simples palabras el modelo son el reflejo en objetos de tablas de las bases de datos las vistas visualizan el contenido del modelo y el controlador su tarea es "traducir" las interacciones del usuario con la vista, en acciones que el modelo tiene que realizar (código de la lógica de negocio).

En la carpeta entidad tenemos que crear una clase llamada Persona la cual contendra el modelo de la tabla Persona que acabamos de crear creamos todas las columnas de la tabla en propiedades privadas respetando sus tipos de datos.Y creando metodos accesores(get y set) para cada propiedad.

En la carpeta controlador creamos una clase la cual sera una super clase que contendra los metodos para devolver la conexiones llamada AbstractControlador.
En la carpeta Utilidades vamos a crear una clase que se llame Utilidades la cual contendra un metodo estatico para que podamos accesarlo por el nombre de la clase y no por instancia, el metodo retornada un string el cual sera un identificador unico para generar llaves primarias,para esto haremos uso del .Net Framework el cual trae una clase Guid el cual retorna un identificador unico y lo delimitaremos a los caracteres necesarios para nuestra llave primaria en este caso la usaremos con 5 caracteres.Esto mismo lo podemos realizar con una secuencia desde la base de datos.


Volvemos a la carpeta del controlador y creamos una clase PersonaControlador la cual extendera de la  AbstractControlador y tendra un metodo insertarMysql el cual tendra un parametro tipo Persona.
 En esta clase estara encapsulada la logica de insertar un registro la primera linea de codigo se obtiene un objeto conexion el cual ya viene abierto solo para ejecutar transacciones luego creamos un comando para ejecutar una transaccion ,definimos el string de consulta con parametros las @ especifica al compilador que son parametros y debe de existir una especificacion que es lo que hacemos luego de instanciar el objeto con el string de consulta y la conexion.Luego la ejecutamos con ExecuteNonQuery y cerramos la conexion todo este codigo esta dentro de un try catch.

En la carpeta vista tenemos que crear el metodo que pida la informacion desde teclado(en este caso porque es por consola) y con esa informacion llenar el objeto  Persona para luego enviarselo al controlador.
Simple se pide la informacion se llena el objeto y se envia al controlador que hara la logica de insercion y desde el Main instanciamos la clase vista y llamamos a este metodo cabe recalcar que hay que fijarnos muy bien en los using que estan en cada clase y de todas las clases que estan en los diferentes namespace que creamos.
Lo ejecutamos y si hasta aca no da ningun error nos saldra la pantalla negra pidiendo los datos la llenamos una por una y si no da ningun error esta bien.
Y verificamos en la base de datos si he guardado correctamente.
Si has llegado hasta aca felicidades ya pues insertar datos desde c# con parametros a mysql.

El siguiente paso es hacerlo para Oracle aca cambia la sintaxis de la insercion pero la logica es la misma

Nos vamos a nuestra carpeta de controlador y abrimos la clase creada anteriormente y creamos otro metodo el cual nos servira para insertar los datos a Oracle.
Aca cambia la sintaxis pero no la logica ahora obtendremos la conexion de oracle llamaremos al metodo que nos la retorna luego creamos el comando para las transacciones solo que del tipo OracleCommand creamos nuestra consulta en string solo que ahora debes de @ seran : ya que oracle asi reconoce a un parametro dentro de una consulta. luego especificamos los valores de esos parametros y ejecutamos el ExecuteNonQuery y cerramos la conexion a la base de datos todo dentro de un try catch.

En nuestra clase vista tendremos que copiar el metodo anterior pero OJO hay que cambiar el metodo que llama del controlador y por supuesto el nombre del metodo.
En la clase Main llamamos este metodo.
Y si todo esta correctamente hecho nos saldra de nuevo la pantalla negra pidiendo los datos.
Y verificamos que en la base de datos se haya almacenado.
Si has llegado hasta aca veras que es muy simple separar la aplicacion en capas logicas las cuales encapsulen  sus funciones internas y la forma de insertar datos a dos distintos gestores de base de datos.

Descargar

viernes, 7 de diciembre de 2012

Acceso a Base de Datos(Oracle y Mysql) en C#

Despues de un largo tiempo de no subir algun aporte hoy traigo este tema a modo de tutorial y saldar dudas que yo tenia y que les puede servir a mas de alguno.

Cuando decimos Acceso a datos es cuando cierta aplicacion en nuestro caso C# necesita poder compartir informacion con algun banco de datos para poder hacer esto pues se elije un gestor de base de datos la mayoria de casos siempre combinan c# y SqlServer por ser del mismo propietario es bastante facil la conexion y la implementacion.

En este tutorial haremos de lado ese gestor y nos iremos por Oracle la version express y Mysql por ser uno de los mas usados.

La teoria la tendran que leer antes aca nos bastara con saber que usaremos un objeto conexion para los dos casos que es el que nos ayuda con toda transaccion que deseemos realizar.

Usaremos el IDE SharpDeveloped no porque sea gratis ,ya que sabemos que Visual Studio tiene un version exprees sino porque yo siento que es mucho mas rapido.

La primera conexion sera  a una base de datos Oracle usaremos el motor que instalamos en tutoriales anteriores link.

Bien creamos un nuevo proyecto de consola y añadimos una referencia al proyecto.

Luego buscamos el driver para Oracle.
Bien ahora crearemos una carpeta dentro del paquete el cual se llamara baseDatos dentro de estas carpetas crearemos una clase que se llama ConexionOracle nos fijamos que haya asignado el namespace acorde a la carpeta.


Bien luego copiaremos ese codigo en el cual se detalla como conectar mediante el objeto  OracleConnection que nos proporcionara una conexion abierta para poder ejecutar transacciones.Bien el protocolo es por donde conectaremos en nuestro caso tcp,el host como es local por defecto es localhost cuando tengan la ip de un servidor externo la ponen ahi,el puerto por defecto es 1521,el siguiente sera dedicated , el nombre del servicio puede ser XE o Orcl en algunos caso depende de la configuracion, el user id tiene que ser el usuario del esquema y la contraseña de dicho esquema.

Luego hacemos un metodo el cual retornara un tipo de  OracleConnection el cual solo basta con instanciarlo y en su contructor mandarle la cadena de conexion que nos la retorna el metodo cadenaConexion(),el cual arma la cadena de conexion para oracle cabe recalcar que hay muchas maneras distintas para realizar esa cadena dependiendo de la necesidad por el momento yo conecto con esta y va bien.Luego de instanciar el objeto abrimos conexion si aca sucede un error se mostrara la exception.

 En nuestra clase Main solo instanciamos el objeto y llamamos al metodo.

Luego ejecutamos el programa y veremos esta pantalla si todo esta correcto.

Bien hasta el momento si has llegado hasta aca felicidades ya realizaste una conexion a oracle.

Para realizar la conexion a mysql es diferente tendremos que bajar el driver de mysql para .net descargar
lo instalamos es puro next y next y tendremos que agregarlo a las referencias de nuestro proyecto.
Luego en la misma carpeta donde esta la conexion a Oracle creamos una clase que se llame  ConexionMysql y tendra el siguiente codigo.
El nuestro caso el servidor sera 127.0.0.1 que es igual a localhost luego el nombre de la base de datos el usuario que por defecto es root y la contraseña es vacia.

Luego hacemos uso de una propiedad que se llama ConnectionString al cual tenemos que igualarlo a la cadena de conexion valida.y luego abrimos la conexion todo esto dentro del try para capturar cualquier error  y mostrarlo en dado caso haya ocurrido.

En la clase principal va este codigo que no es mas que una instancia de la clase conexion a mysql y llamada al metodo getConexion() el cual retornara el objeto conexion abierto.
y si todo ha salido correctamente ejecutamos el proyecto y veremos esta pantalla.

Eso ha sido todo por hoy espero postear ejemplo de como hacer un mantenimiento(insertar,modificar eliminar mostrar) o mejor conocido como CRUD desde c# y Oracle.

descargar