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

2 comentarios:

  1. disculpa me gustaría pedirte tu ayuda ya que e observado en tu blog que posees un amplio conocimiento, mi problema es que realize un proyecto en netbeans que consiste en subir imagenes atravez de un jsp y el servlet se encarga de guardarlo ya sea en "Mis documentos o en C:" ensi es guardar la imagen en una carpeta que no se ubica dentro de la raiz del proyecto pero a la hora de cargarlo en otro jsp en un slide no lo muestra,gracias y espero tu respuesta.

    ResponderEliminar
    Respuestas
    1. me imagino que debe ser un requerimiento del proyecto que se suba una imagen al servidor sin usar una Base de datos.lo primero que haria es revisar si esta bien la direccion que le asignas al slide con la direccion correcta en donde lo sube tu servlet,en que servidor de aplicaciones lo estas ejecutando? pon el codigo .

      Eliminar