¿Que paso con el SqlConnection, el OleDBConnection y los XConnection, XAdapter en VS2005?

Publicado: mayo 2, 2007 en Ado.Net, Herramientas Web, Ingenieria de Software, Lenguajes de programacion, Programación, Sql Server, Visual Studio 2005

¿Quién no ha usado el SqlConnection, SqlAdapter, 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.install_sql.jpg

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:

add_cn.jpg 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):

add_table.jpg
6.- Como pueden apreciar ahora el objeto a parte del dataset es el TableAdapter, que yo lo veo como un DataAdapter tipificado:
config_ta.jpg7.- 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:

add_data.jpg

9.- Ahora cambiamos la vista a Detalles, y arrastramos ProductCategory al formulario:
addtable_win.jpg10.- Antes de que digan wow…., ejecuten, no lo piensen tanto, no miren el código, solo ejecuten..
11.- Ahora si, digan wow… :

win_final.jpg

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…:

win_final2.jpg

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.

comentarios
  1. Ana Belén dice:

    muy buenas:

    gracias lo de arriba, la verdad es que ya me estaba desesperando buscando los oledbconnection, command y demás controles del .Net, con los que ya me había familiarizado.

    En este comentario nombras lo de lo métodos de búsqueda, y los store procedure, me puedes comentar algo más de esto???

    no sé si es aquí donde te tengo que plantear las dudas o hay otro espacio?

    Gracias por todo, eres un fenómeno.

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