Cómo: Crear y utilizar un DataSet con tipo mediante Visual C# NET

Resumen

En este artículo se muestra cómo crear y utilizar DataSet con tipo en una aplicación Web pequeña. Conjuntos de datos, con tipo que hereda de la clase de conjunto de datos , crear a miembros de primera clase de un DataSetde DataTable y DataColumn, que revela las numerosas ventajas que vienen con el uso de establecimiento inflexible de tipos.

Requisitos

Los elementos siguientes describen el hardware recomendado, software, infraestructura de red, habilidades y conocimiento y service packs que necesita tener que completar estos pasos:
  • Microsoft SQL Server 6.5 (o posterior) con la base de datos Northwind
Previas habilidades necesarias:
  • Tener conocimientos generales de Microsoft SQL Server
  • Estar familiarizado con Microsoft Visual Studio .NET
  • Tener conocimientos generales de Microsoft ADO.NET
  • Tener conocimientos generales de los controles Web de Microsoft .NET

Conjuntos de datos con tipo

Siga estos pasos para crear una pequeña aplicación Web mediante Visual Studio .NET. La aplicación Web utiliza DataSet con tipo para mostrar los resultados de una consulta SQL improvisado en la base de datos Northwind.
  1. Inicie Visual Studio. NET.
  2. Cree un nuevo proyecto de aplicación Web denominado TDS en Visual .NET C#.
  3. Asegúrese de que se muestre el Explorador de soluciones. Si no se muestra el Explorador de soluciones, presione CTRL + ALT + L.
  4. Asegúrese de que el archivo WebForm1.aspx está abierto en la ventana del Editor. Si el archivo no está abierto, haga doble clic en WebForm1.aspx en el Explorador de soluciones para abrir el archivo.
  5. En la ventana del Editor, haga clic en Diseño para cambiar a la vista Diseño.
  6. Para abrir el cuadro de herramientas, presione CTRL + ALT + X. En el cuadro de herramientas, haga clic en Formularios Web Forms. Seleccione y arrastre los siguientes a la esquina superior izquierda de la página: dos filas, cada una de una etiqueta seguida de un cuadro de texto (situado a la derecha de la etiqueta). Debajo de éstos, agregue un control DataGrid de la misma manera.
  7. Haga clic en la etiqueta superior. Presione F4 para mostrar la ventana Propiedades. Cambie la propiedad Text al producto. Haga clic en la etiqueta de otra y, a continuación, cambie su propiedad Text a categoría.
  8. Para agregar un nuevo conjunto de datos al proyecto, presione CTRL + MAYÚS + A y, a continuación, haga clic en conjunto de datos en la lista de plantillas. Nombre del conjunto de datos lo siguiente: dsProducts.xsd. Tenga en cuenta que el archivo es en realidad un esquema XML. Haga clic en Aceptar. Ahora verá una página de color amarilla pálida en la ventana del Editor.
  9. Para crear un DataSetcon tipo, presione CTRL + ALT + S para abrir el Explorador de servidores.
  10. Haga clic en servidores, haga clic en el nombre del equipo, haga clic en SQLServers, haga clic en el nombre del servidor, haga clic en Neptunoy, a continuación, haga clic en vistas.
  11. Seleccione la vista lista alfabética de productosde Northwind de SQL Server y, a continuación, arrastre la vista a la página de conjunto de datos amarilla pálida. Una representación visual del conjunto de resultados generado por la vista aparece en la página. Para ver el XML real para el archivo de esquema, haga clic en el botón XML en la ventana del Editor.
  12. Existe un esquema basado en un objeto de SQL Server ahora. Para crear y rellenar el DataSetcon tipo, primero debe generar la clase que se asigna al esquema. Haga clic derecho en la vista Diseño y, a continuación, asegúrese de que está seleccionada la opción Generar conjunto de datos . Si no está seleccionada, selecciónela. Presione CTRL+S para guardar el esquema y generar la clase.
  13. Para ver la nueva clase DataSet con tipo, haga clic en Mostrar todos los archivos en el Explorador de soluciones.
  14. Expanda el árbol situado junto a dsProducts.xsd. Verá un archivo dsProducts.vb, que contiene la nueva asignación de clase para el esquema. También verá un archivo dsProducts.xsx, que se utiliza para el seguimiento de los cambios a los archivos.
  15. Escribir código para mostrar el conjunto de datoscon tipo, haga doble clic directamente en el formulario Web Forms (no en un Control Web). Aparece el código subyacente del formulario Web Forms, y el punto de inserción está dentro del evento Page_Load .
  16. Para incluir las clases que residen en el espacio de nombres System.Data.SqlClient, agregue la siguiente instrucción using al principio de que el código subyacente:
    using System.Data.SqlClient;
    Nota: los otros espacios de nombres que debe disponer de esta pequeña aplicación Web automáticamente se hace referencia en el proyecto cuando se crea una aplicación Web en Visual Studio .NET.

  17. En el procedimiento de evento Page_Load , cree un objeto de conexión, pasando la cadena de conexión al constructor predeterminado de la clase SqlConnection :
    SqlConnection cn = new SqlConnection("server=myserver;uid=myuid;pwd=mypassword;database=northwind");
  18. Cree un objeto SqlCommand que se pasa al objeto SqlDataAdapter. Pase una instrucción SQL improvisada y el nuevo objeto de conexión al constructor SqlCommand. El primero establece la propiedad CommandText del objeto SqlCommand nuevo. También se puede pasar el nombre de un procedimiento almacenado.
    SqlCommand cmd = new SqlCommand("select * from [Alphabetical list of products]", cn);
  19. Cree una instancia del objeto SqlDataAdapter, pasando el objeto SqlCommand nuevo al constructor:
    SqlDataAdapter da = new SqlDataAdapter(cmd);
  20. Ahora, para crear los objetos necesarios para conectarse a la base de datos y devolver datos. El siguiente es el código de conjunto de datoscon tipo. Observe que se crea una instancia de la clase dsProducts : la clase que se asigna a la dsProducts esquema y hereda de la clase de conjunto de datos , no en la clase DataSet genérica en sí mismo.
    dsProducts tds = new dsProducts();
  21. Llamar al método Fill de SqlDataAdapter, pasando el objeto DataSet con tipo y el conjunto de datosdel escrito la propiedad DataTable TableName :
    da.Fill(tds, tds.Tables[0].TableName);
  22. Para establecer la propiedad Text de los controles de cuadro de texto en las columnas con tipo DataSetde DataTableinflexible, utilice el siguiente formato:
    dsProducts.DataTableName[RowIndex].ColumnName
    Para esta aplicación de ejemplo RowIndex está codificado de forma rígida para 5:
    TextBox1.Text = tds.Alphabetical_list_of_products[5].ProductName;TextBox2.Text = tds.Alphabetical_list_of_products[5].CategoryName; 

    Dado que la colección de filas es de base cero, cuando se carga la página, tenga en cuenta que los controles de cuadro de texto mostrar los nombres de producto y categoría del elemento de la sexta fila del DataGrid.
  23. Para mostrar todos los resultados en el control DataGrid, establezca la propiedad DataSource del control DataGrid en el nuevo con tipo DataSety llame a DataBind():
    DataGrid1.DataSource = tds;DataGrid1.DataBind();

(WebForm1.aspx) el listado de código completo

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="TDS.WebForm1" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:Label id="Label1" runat="server" >Label</asp:Label>
<asp:DataGrid id="DataGrid1" runat="server" ></asp:DataGrid>
<asp:TextBox id="TextBox2" runat="server"></asp:TextBox>
<asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
<asp:Label id="Label2" runat="server" >Label</asp:Label>
</form>
</body>
</HTML>

Listado (WebForm1.aspx.cs) de código completo

using System.Data.SqlClient;
namespace TDS
{
/// <summary>
/// Summary description for WebForm1.
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.TextBox TextBox2;
protected System.Web.UI.WebControls.DataGrid DataGrid1;

private void Page_Load(object sender, System.EventArgs e)
{
SqlConnection cn = new SqlConnection("server=localhost;uid=sa;pwd=abcd;database=northwind");
SqlCommand cmd = new SqlCommand("select * from [Alphabetical list of products]", cn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
dsProducts tds = new dsProducts();

da.Fill(tds, tds.Tables[0].TableName);
TextBox1.Text = tds.Alphabetical_list_of_products[5].ProductName;
TextBox2.Text = tds.Alphabetical_list_of_products[5].CategoryName;

DataGrid1.DataSource = tds;
DataGrid1.DataBind();

}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.TextBox1.TextChanged += new System.EventHandler(this.TextBox1_TextChanged);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion
}
}


Comprobación

Presione F5 para ejecutar la aplicación Web. El explorador muestra "Uncle Bob Organic Dried Pears" en el cuadro de texto de producto y "Alimentos" en el cuadro de texto de la categoría . Un control DataGrid que se rellena con la información del producto aparece en los cuadros de texto.

Solución de problemas

  • Los conjuntos de datos genéricos no requieren pasar un nombre de tabla al llamar al método Fill . Ha escrito los conjuntos de datos, sin embargo, requieren, incluso si tienen acceso a recopilación de tablas del conjunto de datosde los índices en lugar del nombre de tabla. Si no se pasa con tipo DataSetdel TableName produce un error "Hay ninguna fila en la posición 0" en tiempo de ejecución. Este requisito de conjuntos de datos con tipo también significa que no puede realizar su propia TableName , sino debe pasar a que se hace referencia en la clase DataSet con tipo, que se tiene acceso como se muestra en el código anterior.
  • Si cambia el objeto de base de datos que usa inicialmente para generar el esquema y escribió la clase DataSet y arrástrelo de nuevo a la vista de diseño del esquema, se sobrescriben los cambios manuales que se realicen en el esquema generado por Visual Studio .NET. Que generalmente es preferible realizar los cambios que haya en el nivel de Microsoft SQL Server y para generar un nuevo conjunto de datos con tipo que to cambiar el esquema resultante.

Referencias

Para obtener más información acerca de cómo trabajar con un DataSetcon tipo, consulte el siguiente sitio Web de Microsoft:


Propiedades

Id. de artículo: 320714 - Última revisión: 17 ene. 2017 - Revisión: 1

Comentarios