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

Seleccione idioma Seleccione idioma
Id. de artículo: 320714 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo se muestra cómo crear y utilizar un DataSet con tipo en una aplicación Web pequeña. Con conjuntos de datos , que heredan de la clase DataSet , crear a miembros de primera clase de un DataSet de DataTable y DataColumn , generando 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, conocimientos y conocimientos y service packs que necesita tener que completar estos pasos:
  • Microsoft SQL Server 6.5 (o posterior) con la base de datos Neptuno
Conocimientos antes necesarios:
  • Estar familiarizado con Microsoft SQL Server
  • Estar familiarizado con Visual Studio.NET
  • Estar familiarizado con Microsoft ADO.NET
  • Estar familiarizado con controles Web de Microsoft .NET

DataSet con tipo

Siga estos pasos para crear una pequeña aplicación Web utilizando Visual Studio. NET. La aplicación Web utiliza un DataSet con tipo para mostrar los resultados de una consulta SQL improvisada de la base de datos Northwind.
  1. Inicie Visual Studio NET..
  2. Cree un nuevo proyecto de aplicación Web llamado TDS en Visual C#. NET.
  3. Asegúrese de que se muestra 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 uno de una etiqueta seguida de un cuadro de texto (que se sitúan a la derecha de cada etiqueta). En, 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 la categoría .
  8. Para agregar un nuevo DataSet al proyecto, presione CTRL + MAYÚS + A y, a continuación, haga clic en DataSet en la lista de plantillas. Nombre del DataSet lo siguiente: dsProducts.xsd . Tenga en cuenta que el archivo es realmente 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 DataSet con tipo, presione CTRL + ALT + S para abrir el Explorador de servidores.
  10. Haga clic en servidores , haga clic en computer name, haga clic en SQLServers , haga clic en server name, haga clic en Neptuno y, a continuación, haga clic en vistas .
  11. Seleccione la vista lista alfabética de productos de Northwind de SQL Server y, a continuación, arrastre la vista a la página de DataSet 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 SQL Server ahora. Para crear y rellenar un DataSet con tipo, primero debe generar la clase que se asigna el esquema. Haga clic con el botón secundario 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á activada, actívela. 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 junto a dsProducts.xsd . Verá un archivo dsProducts.vb, que contiene la nueva asignación de clase del esquema. También ve un archivo dsProducts.xsx, que se utiliza para el seguimiento de cambios en los archivos.
  15. Para escribir código para mostrar el DataSet con tipo, haga doble clic directamente en el formulario Web Forms (no en un Control Web). Aparece el código subyacente del formulario Web 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 tener para esta aplicación Web pequeña automáticamente se hace referencia en el proyecto al crear 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. Crear un objeto SqlCommand que se pasa a continuación, el objeto SqlDataAdapter. Pase al constructor SqlCommand una instrucción de SQL improvisada y el nuevo objeto Connection. El primero establece la propiedad de CommandText del objeto SqlCommand nuevo. También puede pasar el nombre de un procedimiento almacenado.
    SqlCommand cmd = new SqlCommand("select * from [Alphabetical list of products]", cn);
    					
  19. Crear una instancia del objeto SqlDataAdapter, pasando el objeto SqlCommand nuevo al constructor:
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    					
  20. Ahora crea los objetos que son necesarios para conectarse a la base de datos y devolver datos. Las siguientes es el código para el DataSet con tipo. Tenga en cuenta que se crea una instancia de la clase dsProducts : la clase que se asigna a la dsProducts esquema y hereda de la clase DataSet , no la clase DataSet genérica propio.
    dsProducts tds = new dsProducts();
    					
  21. Llame al método Fill de SqlDataAdapter, pasando el objeto DataSet con tipo y el DataSet del escrito propiedad TableName de DataTable :
    da.Fill(tds, tds.Tables[0].TableName);
    					
  22. Para establecer controles de cuadro de la propiedad Text del texto en las columnas en el tipo DataSet del DataTable inflexibles, utilice el formato siguiente:
    dsProducts.DataTableName[RowIndex].ColumnName
    						
    esta aplicación de ejemplo, el RowIndex está codificada para 5:
    TextBox1.Text = tds.Alphabetical_list_of_products[5].ProductName;
    TextBox2.Text = tds.Alphabetical_list_of_products[5].CategoryName; 
    						
    como la colección de filas es de base cero, cuando se carga la página, observe 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 DataSet y llame a DataBind() :
    DataGrid1.DataSource = tds;
    DataGrid1.DataBind();
    					

Lista (WebForm1.aspx) 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>
				

Lista (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 "Tío Bob Organic Dried Pears" en el cuadro de texto de producto y el "Producto" en el cuadro de texto de categoría . Un control DataGrid que se rellena con información del producto aparece en los cuadros de texto.

Solución de problemas

  • Genérico DataSet no requieren que pase un TableName cuando se llama al método Fill . Con conjuntos de datos , sin embargo, requieren esto, incluso aunque tiene acceso a colección de tabla del DataSet por índices en lugar de la TableName . Error al pasar el con DataSet del TableName produce un error "No hay ninguna fila en la posición 0" en tiempo de ejecución. Este requisito de DataSets con tipo también significa que no puede realizar hasta su propia TableName , pero debe pasar al que se hace referencia en la clase DataSet con tipo, que se tiene acceso como en el código anterior.
  • Cualquier cambio manual que realice en el esquema generado por Visual Studio .NET se sobrescribirá si cambia el objeto de base de datos que usa inicialmente para generar el esquema y después escribe DataSet (clase) y arrástrelo de nuevo a la vista de diseño del esquema. Es normalmente preferible para realizar los cambios que se debe en el nivel de Microsoft SQL Server y para generar un nuevo DataSet que cambiar el esquema resultante.

Referencias

Para obtener más información sobre cómo trabajar con un DataSet con tipo, consulte el siguiente sitio Web de Microsoft:
http://msdn2.microsoft.com/en-us/library/esbykkzb(vs.71).aspx


Propiedades

Id. de artículo: 320714 - Última revisión: jueves, 17 de mayo de 2007 - Versión: 2.3
La información de este artículo se refiere a:
  • Microsoft ADO.NET (included with the .NET Framework)
  • Microsoft ADO.NET 1.1
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Palabras clave: 
kbmt kbhowtomaster KB320714 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 320714

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com