Creando una aplicación para conectarse a MS SQL Server Cuando uno instala .Net Framework, se instalan las clases que permiten el acceso a una base de datos MS Sql Server, por lo que dentro de la biblioteca de clases, vienen las clases que nos permiten trabajar con esta base de datos. Si queremos cambiar de base de datos, debemos de conseguirnos las clases que nos permitirán conectarnos a la base de dato que deseemos, existen conectores para MySql, Postgress ,etc. En esta ocasión, lo que voy a hacer es crear dos proyectos del tipo ClassLibrary, uno en C# y otro en C++ para que tengas la aplicación en ambos lenguajes. A través de estas aplicaciones me conectaré a una Base de Datos MS SQL Server 2008, extraeré la información y en un post posterior te mostraré como puedes hacer para mostrarla en pantalla. Te recomiendo leer el post Creando un Proyecto Class Library para que recuerdes de que se trata. Continuando, recuerda que que estoy haciendo dos proyectos, uno en C# y otro en C++, pero basta con hacer sólo uno de ellos, porque recuerda que en Visual Studio, puedes combinar, en una misma solución, varios lenguajes. En general, para conectarnos a una base de datos necesitamos de un objeto Connection y un objeto Command y de manera puntual los objetos en el caso de SQL son SqlConnection y SqlCommand, ambos definidos en el namespace System.Data.Sql. De igual forma necesitamos de un SqlAdapter, quien es el vínculo entre el comando definido y por lo tanto quien será el canal de comunicación entre nuestra aplicación y la base de datos. Luego de crear los proyectos, lo primero que voy a colocar son los namespace que me hacen falta para trabajar: Visual C++ C# 1 using namespace System; 2 using namespace System::Collections::Generic; 3 using namespace System::Linq; 4 using namespace System::Text; 5 using namespace System::Data; 6 using namespace System::Data::Sql; 7 using namespace System::Data::SqlClient; Asignando la Cadena de Conexión Por su nombre en inglés, la cadena de conexión es asignada mediante la propiedad ConnectionString, del objeto Connection que se utilice para conectarse a la Base de Datos indicada. Si leíste los dos post a los que hago mención al inicio, pudiste observar que hay una serie de Clases que nos permitirán trabajar con la data. Uno de estas clases es el DataSet. El DataSet, te permite definir un objeto para que, luego de extraída la información, el cliente pueda mostrarla, insertar nuevos campos, modificarla, etc. En resumen, el DataSet se refleja desde el lado Cliente, por lo que permite que la aplicación Cliente, tenga en memoria los datos que han sido extraídos para poder trabajar con ellos. Por lo tanto, voy a definir una función que te permita obtener todos los registros de la tabla CopstoneTable ubicada en la base de datos llamada CopstoneBD y que retorne un DataSet, el cual será recorrido o manipulado por otra aplicación. Visual C++ C# view sourceprint? 01 public ref class MiPrimeraConexionaunaBD 02 { public <img src="http://copstone.com/wp03 includes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley"> ataSet^ Trae_Informacion_Desde_BD() 04 { 05 06 /*Creamos un objeto del tipo SqlConnection * para conectarnos a la Base de Datos*/ 07 08 SqlConnection ^sqlcon = gcnew SqlConnection(); /*Mediante la propiedad ConnectionString 09 10 *asignamos la cadena de conexión */ sqlcon->ConnectionString = "DatSource=localhost; 11 12 initial catalog=Pubs; user id=sa; password=SsAa"; 13 14 /*Creamos un comando para seleccionar *los campos que deseamos obtner*/ 15 16 SqlCommand ^cmd = gcnew SqlCommand("Select * from pubs"); /*Creamos un sqladapter que estará 17 * vinculado a la consulta realizada*/ 18 SqlDataAdapter ^da = gcnew SqlDataAdapter(cmd); 19 20 //Creamos un objeto DataSet DataSet ^ds = gcnew DataSet(); 21 22 try { //Abrimos la conexión a la BD 23 24 sqlcon->Open(); try{ 25 26 /*A partir del sqladapter *definido llenamos 27 el dataset*/ 28 29 30 da->Fill(ds); } 31 __finally{ 32 33 34 /*Finalmente siempre cerramos la conexión a la BD 35 36 */ sqlcon->Close(); 37 38 } } 39 40 catch(...) { //Ante cualquier error lanzamos la excepción 41 throw ; 42 } 43 44 /*Retornamos el objeto dataset *para ser utilizado por el cliente*/ 45 return ds; 46 47 } }; Bueno, con este código, cambiado el nombre de la Base de Datos en la cadena de conexión y el nombre de la tabla, puedes obtener la información desde cualquier tabla. Cuando instalas MSSQL Server, trae Bases de Datos de Ejemplo: Pubs, NorthWind, etc, las cuales puedes utilizar para practicar estas rutinas. Lo que hace este código únicamente es recopilar información desde una tabla, pero lo que aún no hacemos es como insertar, modificar o borrar los valores, eso lo iremos aprendiendo de a pocos. En el próximo post, lo que voy a realizar es una aplicación cliente que interactúe con este Proyecto ClassLibrary y por lo tanto recorra el DataSet y puedas mostrar la información en pantalla.