{"id":501,"date":"2026-03-08T22:28:29","date_gmt":"2026-03-08T22:28:29","guid":{"rendered":"https:\/\/hackcuba.net\/?p=501"},"modified":"2026-03-08T22:28:29","modified_gmt":"2026-03-08T22:28:29","slug":"visual-studio-2005-y-su-tableadapter","status":"publish","type":"post","link":"https:\/\/hackcuba.net\/?p=501","title":{"rendered":"Visual Studio 2005 y su TableAdapter"},"content":{"rendered":"\n<p>El trabajo con bases de datos es el pan de cada d\u00eda para muchos de nosotros. Existen varias formas de hacerlo en dependencia de la plataforma en que est\u00e9n montados nuestros datos y las herramientas que usemos para manipularlos. No me quedan dudas de que .NET brinda facilidades extraordinarias a la hora de trabajar.<\/p>\n\n\n\n<p>En el Visual Studio 2005 apareci\u00f3 una herramienta llamada DataSet tipado (o con declaraciones de tipo), hereda directamente del anterior <code>System.Data.DataSet<\/code>, pero ahora las tablas con las que se conectan son tipos presentes en propiedades del DataSet. Vamos a verlo m\u00e1s despacio.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Insertar un DataSet en nuestro proyecto::<\/h2>\n\n\n\n<p>Luego de haber creado un proyecto (en mi caso una aplicaci\u00f3n de consola en C#), vamos a agregarle un nuevo elemento. Tal y como aparece en la figura, seleccionamos DataSet.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"681\" height=\"413\" src=\"https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660005.png\" alt=\"\" class=\"wp-image-502\" srcset=\"https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660005.png 681w, https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660005-300x182.png 300w\" sizes=\"auto, (max-width: 681px) 100vw, 681px\" \/><\/figure>\n\n\n\n<p>Al momento nos aparece en vista de dise\u00f1o el espacio de trabajo del DataSet. Podemos agregarle desde la Caja de herramienta (ToolBox) un TableAdapter, que es el arroz con pollo de este trabajo. El mismo, como su nombre nos indica, es el encargado de adaptar la informaci\u00f3n de la base de datos a .NET. Ahora tenemos que configurarlo mediante un <em>wizard<\/em> (igual lo podemos hacer a mano). Estos son los pasos:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Establecer la conexi\u00f3n a los datos. Para ello necesitamos el <em>Connection String<\/em> igual al que usamos al construir un objeto <code>SqlConnection<\/code>. Recordemos que tiene la forma: <code>Data Source=&lt;MiServidor>; Initial Catalog=&lt;MiBaseDatos>; Integrated Security=True<\/code>. Tambi\u00e9n podemos configurar una nueva conexi\u00f3n y hacerlo pasito a pasito. Visual Studio en cualquier momento programa por nosotros.<\/li>\n\n\n\n<li>Luego definimos la manera en que el TableAdapter se conecta con la DB. Vamos a probar con sentencias SQL; de otra forma habr\u00eda que hacerlo con procedimientos almacenados o creando unos nuevos.<\/li>\n\n\n\n<li>Ahora necesitamos definir c\u00f3mo trabajan las sentencias anteriores. Primero seleccionamos d\u00f3nde est\u00e1 la flecha roja para especificar todos los campos marcados, como aparece en la figura siguiente. En la flecha azul construiremos la consulta.<\/li>\n\n\n\n<li>La consulta pudiera ser <code>SELECT * FROM TABLA_X;<\/code>. Es importante incluir los campos llaves de la tabla si queremos poder actualizar los datos de la base de datos cuando los modifiquemos en tiempo de ejecuci\u00f3n.<\/li>\n\n\n\n<li>El pr\u00f3ximo paso, ya casi al terminar, es especificar los m\u00e9todos que queremos que tenga nuestro TableAdapter. Incluya ambos: <code>Fill()<\/code> y <code>Update()<\/code>. Despu\u00e9s nos mostrar\u00e1 los resultados del asistente y ya estaremos listos para trabajar con el DataAdapter.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"595\" height=\"449\" src=\"https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660006-1.png\" alt=\"\" class=\"wp-image-503\" srcset=\"https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660006-1.png 595w, https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660006-1-300x226.png 300w\" sizes=\"auto, (max-width: 595px) 100vw, 595px\" \/><\/figure>\n\n\n\n<p>Al concluir el <em>wizard<\/em> podremos tener un objeto como el que aparece en nuestra figura. \u00abAlerta\u00bb ser\u00eda el DataTable que referencia a la tabla dentro de mi base de datos. AlertaTableAdapter nos queda claro lo que es.<\/p>\n\n\n\n<p>Para poder usar nuestros objetos debemos incluir el <em>namespace<\/em> <code>DataSet1TableAdapters<\/code>, ubicado dentro del <em>namespace<\/em> actual de nuestro proyecto. Si trabajamos en una aplicaci\u00f3n Windows, nos aparecer\u00e1 en el Toolbox de la vista de dise\u00f1o y s\u00f3lo tendremos que incluirlo y nombrarlo. Seguimos con la v\u00eda anterior:<\/p>\n\n\n\n<p><code>AlertaTableAdapter alerta = new AlertaTableAdapter() ;<br>DataSet1.AlertaDataTable tabla = new DataSet1.AlertaDataTable() ;<br>alerta.Fill(tabla) ;<\/code><\/p>\n\n\n\n<p>En estos momentos acabamos de llenar la tabla de tipo AlertaDataTable con los datos correspondientes de ejecutar la consulta SQL definida anteriormente. El objeto <code>tabla<\/code> tiene propiedades muy interesantes como <code>Rows<\/code> que devuelve una colecci\u00f3n con todas las filas de la misma. Podemos indexar de la forma <code>tabla[3][6]<\/code> y de esta forma acceder a cualquier elemento. De m\u00e1s est\u00e1 decir que tiene m\u00e9todos para buscar, insertar, y eliminar elementos de la tabla. Es sin duda una forma pr\u00e1ctica de trabajar con estos datos.<\/p>\n\n\n\n<p>La mejor parte es que cuando terminemos de trabajar con la tabla, podemos guardar todos sus cambios.<\/p>\n\n\n\n<p><code>alerta.Update(tabla) ;<\/code><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusiones::<\/h2>\n\n\n\n<p>Hemos visto lo f\u00e1cil que podemos hacer una conexi\u00f3n a una base de datos, y muy por arriba todas las ventajas que brinda manipular esos datos como objetos. Mediante la utilizaci\u00f3n de objetos DataSet con declaraci\u00f3n de tipos, disponemos de una manera f\u00e1cil y eficaz de actualizar una base de datos utilizando el modo desconectado que nos dispensa ADO.NET. Espero que el art\u00edculo haya sido de su inter\u00e9s, sobre todo, para los nuevos usuarios que est\u00e1n comenzando con el dise\u00f1o de aplicaciones de bases de datos utilizando Visual Basic 2005.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Para saber m\u00e1s&#8230;<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"http:\/\/www.mvp-access.com\/softjaen\/bases\/adonet\/index.htm\" target=\"_blank\" rel=\"noreferrer noopener\">Ejemplo de c\u00f3mo utilizar un TableAdapter<\/a><\/li>\n<\/ul>\n\n\n\n<p>Escrito por Krlo [<a href=\"mailto:blackhat4all@gmail.com?subject=para\u00a0Krlok\">blackhat4all@gmail.com<\/a>]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El trabajo con bases de datos es el pan de cada d\u00eda para muchos de nosotros. Existen varias<\/p>\n","protected":false},"author":2,"featured_media":428,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18,36],"tags":[58,38,153,152],"class_list":["post-501","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programacion","category-proyecto-blackhat","tag-programacion","tag-proyecto-blackhat","tag-visual-studio","tag-visual-studio-2005"],"_links":{"self":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/501","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=501"}],"version-history":[{"count":1,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/501\/revisions"}],"predecessor-version":[{"id":504,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/501\/revisions\/504"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/media\/428"}],"wp:attachment":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=501"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=501"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=501"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}