En este post tratare de explicarles como crear una conexión en C# hacia una base de datos Access.
Primero que nada… que es OLE DB?
OLE DB significa Object Linking and Embedding for Databases que en español es Enlace e incrustación de objetos para bases de datos. Como su nombre lo indica es una interfaz que nos permite comunicarnos con una fuente de datos, desde un archivo de texto hasta una base de datos (Oracle, Access, etc.) de manera muy fácil.
Ahora si a la programación:
1) Lo primero que hay que hacer es nuestra connection string, la cual voy a guardar en una variable string llamada conString:
string conString = “Provider=Microsoft.ACE.OLEDB.12.0;”
+@”Data Source=path”;
Path contiene la dirección hacia nuestra base de datos.
Nótese el símbolo @ en la segunda línea de código, esto lo hago únicamente para evitar que se ejecuten secuencias de escape mientras trato de escribir el path.
*Ejemplos de secuencia de escape:
\n = nueva línea.
\t = tab.
2) Si queremos realizar alguna acción sobre nuestra base de datos vamos a necesitar un objeto de tipo OleDbCommand.
OleDbCommand command = new OleDbCommand();
3) Necesitamos un objeto de tipo OleDbConnection para representar nuestra conexión abierta a la base de datos. Este objeto al crearlo recibe de parametro nuestra string de conexión:
OleDbConnectionconn = new OleDbConnection(conString);
conn.Open();
command = conn.CreateCommand();
Es importante no olvidar agregar las siguientes directivas:
using System;
using System.Data;
using System.Data.OleDb;
Listo, en 3 sencillos pasos hemos creado una conexión exitosa a una base de datos Access.
Ahora vamos a hacer uso de una herramienta llama DataGridView, esta nos va ayudar a mostrar los datos en una cuadricula parecida a las de Excel.
Arrastramos de la barra de herramientas el objeto DataGridView y le ponemos de nombre grid.
Primero necesitamos tener alguna sentencia SQL, por ejemplo:
string strSQL = “SELECT [Tbl Nombres].* FROM [Tbl Nombres]”;
Supongamos que tengo una tabla llamada “Tbl Nombres”, con esta sentencia traigo toda la información en esa tabla.
Se la asignamos a nuestro objeto OleDbCommand :
command.CommandText = strSQL;
Para ejecutar esa sentencia necesito un Objeto OleDbDataAdapter, el cual recibe de parametro el objeto OleDbCommand :
OleDbDataAdapter adapter = new OleDbDataAdapter(command);
La informacion la vamos a guardar en un DataSet, lo relleneamos usando el objeto OleDbDataAdapter:
DataSet ds = new DataSet();
adapter.Fill(ds);
Por ultimo mostramos la informacion en el DataGridView:
Como solo tenemos una tabla en el dataset, escribimos ds.Tables[0].
grid.DataSource = ds.Tables[0];
Y listo, mas adelante explicare diferentes maneras de representar la informacion obtenida de una base de datos: crear filtros, reportes, etc.
Tal vez se preguntaran por que hacer esto, si los queries ya estan en Access, etc. Mi respuesta seria que la manera en que presentamos la informacion importa mucho y se me viene a la mente una conferencia/platica impartida por Mauricio Angulo en el MSP Summit 2010, acerca de la Experiencia de usuario y como influye al momento de usar una aplicación.