Developer's Diary

23 marzo, 2011

Curso C# – Bases de datos I

Ya hemos llegado al último punto que nos quedaba pendiente de nuestro curso de programación. La conexión con bases de datos.

Recuerdo que cuando comencé a programar y quise usar bases de datos, me costo mucho el comienzo y fue, porque no encontré ningún lugar donde diesen una explicación correcta.

Aquí vamos a mostrar como se conectan con las bases de datos de una manera sencilla y fácil.

Este apartado del curso se repartira en cuatro entregas, está primera que nos mostrará los detalles esenciales para conocer como se realiza la conexión con bases de datos, en el segundo apartado aprenderemos a realizar las transacciones en una base de datos, ya sea de oracle, mysql, sql server o access,la tercera entrega será dedicada a usar XML como contenedores persistentes de datos en .Net y la última entrega se completara con los pequeños consejos o tips respecto al tema.

En este pequeño curso nos vamos a saltar todo el tema de realizar transacciones en bases de datos en ambientes conectados y desconectados y nos vamos a centrar en la transacción en sí. Vamos a mostrar el uso de base de datos de una manera fácil.

Funcionamiento

 

Una base de datos se podría considerar un gran almacen de contenido, que contiene los datos que hemos abstraido de nuestra aplicación de una manera persistente. No nos vamos a meter en detalles de diagramas, si no más bien en el plano técnico de la situación.

Por lo tanto, este almacen de datos, tiene un puerto a la espera de que se realicen conexiones, como por ejemplo en el caso de MySQL el 3306. A resumidas cuentas, la conexión con una base de datos con el exterior no es más que una comunicación TCP/IP, como muchas otras que se producen en nuestro sistema.

Bien, desde la aplicación, lo que realmente hacemos es establecer una comunicación TCP/IP con el servidor de datos para realizar las distintas transacciones. Este, como cualquier otra comunicación, nos responde con la gestión realizada, en caso de que hayamos realizado una consulta y nos devuelva datos o con un error, en el caso de que hayamos metido la pata.

Ahora que sabemos básicamente como funciona una base de datos con nuestra aplicación podemos pasar a lo que realmente nos interesa.

Cuatro Objetos

 

El ABC de la programación con Bases de datos se puede resumir a cuatro objetos que pueden usarse de una manera muy sencilla, aunque contengan una gran funcionalidad. .Net Son estos:

 

  • Connection
  • Command
  • DataAdapter / DataReader
  • DataSet

Como podemos ver, son realmente cinco, pero en su uso se podría resumir en tres o cuatro dependiendo de si vamos a tomar los datos con la conexión abierta o sin la conexión abierta, es el caso de las transacciones conectado o desconectado.

¿Que es esto de conectado o desconectado? Aunque hemos dicho que no íbamos a centrarnos en este detalle, hay que pararse una milesima de segundo, pero no tanto, como lo hacen otros manuales en los que se habla de tal gestión.

Como decíamos un poco más arriba, nuestra aplicación realiza una comunicación con nuestro sistema de datos, siendo así, podemos solicitar una información a la base de datos y desconectar. Eso sería un ambiente desconectado o estar constantemente conectados con la consiguiente de que los datos siempre estarían actualizados en el último segundo.

La pregunta que os surgirá en estos momentos, es ¿Cual es más eficiente? La respuesta es “Depende”.

Si nuestro sistema trata con datos muy delicados y un cambio puede significar una gestión errónea, os diría que esa aplicación debe tener un sistema conectado, que en todo momento este en comunicación con la base de datos y la información se vaya refrescando en todo momento. Eso va a producir un alto consumo de recursos, pero va evitar el error, además de que para el desarrollador puede significar estar actualizando datos constantemente y tener una conexión en todo momento con el servidor de datos.

Si por otro lado, nuestro sistema no requiere de esa actualización continúa de información, en la que un cambio en el sistema haga que una transacción cambie. En ese caso, usaría una conexión en modo desconectado, donde la información se carga al iniciar la aplicación y en la que se vaya refrescando cada determinado tiempo. Este tipo de sistemas agota los recursos de una manera completamente distinta, ya que en un sistema conectado, solo tenemos que recuperar la información que no sea necesaria en ese momento, mientras que en este caso recuperaremos mucha información inicialmente, para poder cerrar la base de datos.

Dependiendo de los requisitos de la aplicación sobre la que estemos trabajando, así será el sistema que tengamos que elegir. Lo que si debeis tener en cuenta es que, lo que produce una mayor demora en el uso de una base de datos es la apertura y cerrado de la conexión a la cual pasaremos ahora.

Como indicábamos necesitamos tres objetos, si trabajamos en estado conectado y cuatro en caso de que sea de forma desconectada. En ambos nos encontraremos usando tanto el objeto Connection, como el Command. Estos objetos varían su nombre dependiendo del tipo de motor de base de datos que estemos usando. Por ejemplo, si nuestro sistema de es de MySQL, tendremos un MySQLConnection o si usamos Oracle, OracleConnection. Pero ya nos centraremos en ese detalle en el siguiente post.

Cualquier conexión con base de datos, requiere de una conexión y está requiere de una connectionstring. Una connectionstring, es una cadena de caracteres donde se incluye toda la configuración con la cual realizaremos la conexión con nuestra base de datos, siempre que tengo que consultar una cadena de conexión, consulto esta página. Es una página que debe incluirse en vuestros favoritos, ya que su información es estrictamente necesaria.

El constructor base de un objeto de conexión, obtendrá una connectionstring, tenemos muchos ejemplos en el enlace de antes. Cuando hayamos realizado la instanciación, ya tendremos nuestra conexión activa. Solo nos queda abrirla, cuando realicemos las gestiones y cerrarla cuando terminemos de hacer las transacciones. Esto se puede hacer con los métodos Open y Close respectivamente.

¿Pero con qué vamos a realizar las transacciones? Con el objeto Command.

El objeto Command es el encargado de realizar las transacciones, cuando construimos un objeto de este tipo no nos pedirá nada o podremos construirlo pasándole el objeto de Connection y una sentencia SQL. Si te has decantado por realizar una aplicación con bases de datos, deberías sabes que es una sentencia SQL, en caso contrario no te preocupes, creare un pequeño tutorial muy básico cuando termine esta parte del curso.k

Cuando tengamos nuestro objeto command listo, solo nos queda una cosa. Lanzarlo. Solo tenemos que llamar al método ExecuteNonScalar del objeto Command y tener cuidado de haber abierto la conexión con la base de datos anteriormente y ya se habrá producido una transacción.

¿Pero y si queríamos recuperar datos de nuestra base de datos?

Para eso tenemos el DataAdapter y el Dataset.

El primero nos permite crear una transacción con la base de datos que retorne información, como puede ser una Sentencia de SQL de tipo SELECT. La función del DataSet es almacenar esos datos, recupera toda la información que le hayamos pedido a la base de datos, se podría considerar una copia de la base de datos dentro de nuestra aplicación, con sus distintas tablas, filas y columnas. Por lo tanto es una copia exacta de lo que le hayamos solicitado con la sentencia SQL.

A partir de aquí solo nos queda trabajar con nuestros datos que hayamos pedido y en caso de que queramos realizar transacciones solamente hacerlas.

En pocas palabras esta es la manera de utilizar una base de datos, de manera desconectada.

Para la manera conectada solo es idénticamente igual, con la diferencia, de que no usamos los objetos DataAdapter y DataSet. Si no el objeto DataReader, debemos pasarle el objeto de conexión y la sentencia SQL a la que queremos acceder y funciona de una manera muy similar a como trabajabamos con los ficheros binarios. Pidiendo información.

Yo recomiendo que probeis ambas maneras de trabajar con las bases de datos y useis con la que os sintaís más cómodos, en mi caso, uso más la carga de datos en DataSets, porque me resulta mucho más eficiente.

Hasta aquí nuestro primer post donde hablamos como usar bases de datos. No nos hemos metido con código, porque realmente lo que estado planteando en estas líneas es más bien pseudocódigo para que veáis como se realizan las distintas gestiones con bases de datos. No obstante, en el siguiente post hablaremos más concretamente de como se conecta a cada uno de los servidores de bases de datos y ahí ya expondremos un poco más de código.

Un saludo y si teneis alguna duda, comentar!.

Anuncios

2 comentarios »

  1. Precisamente tengo algunos dias buscando informacion sobre como conectar con bases de datos especificamente mysql, despues de navegar por paginas y paginas que solo me confundian mas, encontre este excelente post, mejor explicado no pude haber econtrado otro, por fin ya tengo una idea clara de como funcionan las conexiones con bases de datos, gracias por la informacion y la dedicacion y claridad con que explicas todo, espero la siguiente parte y muchas gracias, saludos desde Mexico.

    Comentario por Carlos — 3 abril, 2011 @ 2:57 AM

    • Me alegro que te haya sido de utilidad. Con las palabras que me comentas, me recuerdas a mi, cuando comencé a conectar con bases de datos, por eso me alegro de ser de ayuda ahora.

      Un saludo y pronto podrás ver el siguiente post.

      Comentario por 3nk1 — 3 abril, 2011 @ 4:15 PM


RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: