que paso con el SqlConnection, el OleDBConnection y los XConnection, XDataAdapter en VS2005?

¿quién no ha usado el SqlConnection, SqlDataAdapter, SqlDataReader?. ¿quién, no los uso desde el caja de herramientas?. Pero, ¿dónde estas estos controles en VS2005?


En principio iba a responder solo con los pasos, por unos pendientes que tengo, pero no puedo evitarlo voy hacer un how to, no tan detallado, pero con algunos pantallazos.


En este caso usaré Visual C# Express y SQL Express, sobre Windows Vista RC2. ¿por qué?, por que esas versiones estan al alcance de todos por ser gratuitas ;). Y obviamente son aplicables a las versiones superiores.


Ahora que estuve instalando SQL Express, me percate de una opción interesante, no se, si no la vi antes (en las versiones beta), o no tenía, y es la posibilidad de hacer una instalación avanzada.



Con una instalación avanzada, podemos configurar el nombre de instancia, en mi caso es .miSQLExpress, pero si no tienen planeado instalar una versión superior de SQL, pueden usar la instancia por defecto, y para que, al conectarse solo pongan el nombre de equipo, (local), localhost, o sólo “.”.


Ah por cierto trabajaré con Adventure Works, la cuál se puede descargar desde esta página: SQL Server 2005 Samples and Sample Databases (July 2006).


Vamos a los pasos, supongo que ya tienen instalado AdventureWorks, Managment Studio Express, SQL Express, y C# Express:



  1. Creo mi aplicación Windows con C#.

  2. Agrego un nuevo conjunto de datos: dsAdventure.xsd.

  3. Ahora agrego una nueva coneción a mi base de datos, puedo escoger entre Access vía OleDB o SQL:

  4. En el caso de los que han cambiado el nombre de la instacia por defecto (SQLExpress), el mio por ejemplo, al agregar la conexión hay que probarla, si obtenes error, hay que hacer clic en propiedades avanzadas, y cambiar el nombre de la instancia (por defecto viene con SQL Express), indepientemente que instancia le hayas puesto de nombre a tu servidor de base de datos. Ah por cierto se usará el modelo attach DB, en el cuál para la conexión no es necesario el nombre del server y la db, sino el archivo mdf, que esta dentro de la carpeta Data de MSSQL.

  5. Ahora arrastro una nueva tabla desde la conexión agregada, nos pedira agregar una conexión local dentro del proyecto, hacemos clic en SI o YES, depediendo del idioma de la instalación del Csharp Express (como se han habrán podido dar cuenta, tengo al versión en espaniol):

  6. Como pueden apreciar ahora el objeto a parte del dataset es el TableAdapter, que yo lo veo como un DataAdapter tipificado:

  7. Lo que es interesante es que que las consultas generadas de Insert, Update, Delete, y Select, la podemos cambiar por Store Procedures, además podemos personzalizar más el TableAdapter, agregando métodos de búsqueda, etc.

  8. Ahora a lo nuestro agregar la data, para esto abrimos el formulario, y mostramos los orígenes de datos, si no esta, lo hacemos desde el menú Data, Show DataSource, y en espaniol, Datos, Mostrar Orígenes de Datos:

  9. Ahora cambiamos la vista a Detalles, y arrastramos ProductCategory al formulario:

  10. Antes de que digan wow…., ejecuten, no lo piensen tanto, no miren el código, solo ejecuten..

  11. Ahora si, digan wow… :

Ahora si, espero que todo haya quedado claro?, no prueben el update .


A los que probaron el update habrán notado que no hace update, en este punto deberían comerzar a silvar, y a pedir su plata. Pero tranquiloss…., todo esta bajo control, no hubiera publicado el post, si previamiente no hubiera soluciado esto, aunque tome varias horas, aunque no coma, aunque no…; según la regla Nº13 del manual buen programador, si vas hacer algo, hazlo bien, sino, mejor no lo hagas . Y nada, vamos, primero les explico que ha pasado, y después les explico como solucionarlo.


El problema se presenta, por el quicktranslate que hice de este post, que al momento de decir SI en el mensaje de arriba que les dije que pulsarán SI, lo que hace es adjuntar el archivo mdf a nuestro proyecto. ¿pero, eso es lo que debía hacer?. Aja, pero el problema es que la conexión agregada se queda referenciada a la ruta del archivo original (la carpeta Data de MSSQL). Y resumidamente ese es el problema.


La solución, “cuanto más tiempo te demore un problema, mayor es el éxtasis alcanzado al solucionarlo“:



  1. Tenemos que cambiar la cadena de conexión dentro del archivo de configuración de la aplicación, app.config, y en el datatable ProductCategory, esto lo hacemos desde el diseñor del dataSet. Lo reemplzamos por la actual ruta del archivo *.mdf adjuntado dentro de nuestra aplicación.

  2. Ejecutar nuevamente.

  3. Modificar un registro, ej., cambiar el nombre de la categoría a bicicleta.

  4. Cerrar.

  5. Volver a ejecutar.

  6. Y por último decir wow…:

Con una versión de SQL, NO Express, no deberíamos tener este problema.


Cabe resaltar que esta, es una demo básica, nosotros podemos usar StoreProcedures, podemos extender la funcionalidad del TableAdapter dentro de una capa de Negocio, usando WebServices, y todo el tipo de cosas arquitectónicas que se les ocurran.


De más esta decir sobre todo lo que ha generado, los controles, la presentación, validaciones del tipo de dato, asignación del autonumerico, entre otras… es, siendo cualitativos, espectacular; y cuantitativos, es productivo.


Links útiles:



P.D.: Una vez más, muchas gracias por sus preguntas, aunque a veces demore en responder, siempre respondo todas. De todas las pregunta recibidas, siempre hay algo que aprender de ellas :D. Y recuerden que si tienen algún problema, con este howto, me dejan un comentario en el post. Y si tienen preguntas de otro tema, haganlas en el foro, y si el problema es medio marciano, como el de este post me envían un mail, previamente haber echo la consulta en el foro, con el link del post en el foro.


Saludos,


Post cruzado desde starrillo blog

5 comentarios sobre “que paso con el SqlConnection, el OleDBConnection y los XConnection, XDataAdapter en VS2005?”

  1. Me preguntan:

    – ¿es necesario usar AdventureWorks?. Si quieres repasar el mismo ejemplo, si. Solo hay una versión para el motor de base de datos, y funciona en cualquiera de las versiones de SQL Server 2005.

    – ¿es necesario tener SQL Server 2005?, y bueno… si quieres repasar el mismo ejemplo pues si. Pero la idea es que lo tomes como un modelo, y lo puedas hacer usando el proveedor de base de datos que tu tengas.

    Saludos,

  2. Luis si quieres los controles antiguos, sólo tienes que hacer referencia de ellos desde el ToolBox, busca la dll de esos controles, y se pueden agregar.

    Saludos,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *