COMO: Criar e utilizar um tipo DataSet utilizando o Visual C# .NET

Traduções de Artigos Traduções de Artigos
Artigo: 320714 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo mostra como criar e utilizar um DataSet escrito numa pequena aplicação Web. Escreveu DataSets , que herda da classe DataSet , crie primeira membros de um DataSet do DataTables e DataColumns , paragem muitas vantagens fornecidas com a utilização de escrever forte.

Requisitos

Os seguintes itens descrevem o hardware recomendado, software, infra-estrutura de rede, competências e conhecimentos e service packs que tem de ter que concluir estes passos:
  • Microsoft SQL Server 6.5 (ou posterior) com a base de dados Adamastor
Anteriores competências necessárias:
  • Geral familiaridade com o Microsoft SQL Server
  • Geral familiaridade com o Microsoft Visual Studio .NET
  • Geral familiaridade com o Microsoft ADO.NET
  • Geral familiaridade com controlos de Web do Microsoft .NET

DataSets escrito

Siga estes passos para criar uma aplicação Web pequena utilizando o Visual Studio. NET. A aplicação de Web utiliza um DataSet escrito para apresentar os resultados de consulta SQL improvised na base de dados Adamastor.
  1. Inicie o Visual Studio NET..
  2. Crie um projecto Web Application novo denominado TDS no Visual C# .NET.
  3. Certifique-se que é apresentado no Solution Explorer. Se não for apresentado no Solution Explorer, prima CTRL + ALT + L.
  4. Certifique-se que o ficheiro WebForm1.aspx está aberto na janela Editor. Se o ficheiro não estiver aberto, faça duplo clique WebForm1.aspx no Solution Explorer para abrir o ficheiro.
  5. Na janela Editor, clique em estrutura para mudar para vista de estrutura.
  6. Para abrir a caixa de ferramentas, prima CTRL + ALT + X. Na caixa de ferramentas, clique em Formulários da Web . Seleccione e arraste o seguinte para o canto superior esquerdo da página: duas linhas de cada um rótulo seguido de uma caixa de texto (posicionada à direita de cada etiqueta). Em estas, adicione um DataGrid da mesma forma.
  7. Clique no rótulo superior. Prima F4 para apresentar a janela Propriedades. Altere a propriedade de texto para o produto . Clique no rótulo e altere a propriedade de texto à categoria .
  8. Para adicionar um novo DataSet ao projecto, prima CTRL + SHIFT + A e, em seguida, clique em DataSet na lista de modelos. Nome do DataSet o seguinte: dsProducts.xsd . Note que o ficheiro é realmente um esquema XML. Clique em OK . Agora verá uma página amarela pálida a janela do Editor.
  9. Para criar um DataSet escrito, prima CTRL + ALT + S para abrir o Explorador do servidor.
  10. Clique em servidores , clique em computer name, clique em SQLServers , clique em server name, clique em base de dados Adamastor e, em seguida, clique em vistas .
  11. Seleccione a vista de SQL Server Adamastor lista alfabética de produtos e, em seguida, arraste a vista para a página DataSet amarela pálida. Uma representação visual do conjunto de resultados gerado pela vista aparece na página. Para ver o XML real para o ficheiro de esquema, clique no botão XML sob a janela do Editor.
  12. Existe um esquema com base num objecto SQL Server agora. Para criar e preencher uma letra de imprensa DataSet , primeiro tem de gerar a classe que mapeia para o esquema. Clique com o botão direito do rato a vista de estrutura e, em seguida, certifique-se de que a opção de Gerar DataSet está seleccionada. Se não estiver seleccionada, seleccione-o. Prima CTRL+G para guardar o esquema e gerar a classe.
  13. Para visualizar a nova classe DataSet introduzida, clique em Mostrar todos os ficheiros no Solution Explorer.
  14. Expanda a árvore junto a dsProducts.xsd . Verá um ficheiro dsProducts.vb, que contém o novo mapeamento de classe para o esquema. Verá também um ficheiro dsProducts.xsx, que é utilizado para registar alterações aos ficheiros.
  15. Para escrever código para apresentar o digitado DataSet , faça duplo clique directamente no formulário Web (não num controlo Web). Codebehind o formulário de Web aparece e o ponto de inserção estiver dentro do evento Page_Load .
  16. Para incluir as classes que residem no espaço de nomes System.data.SqlClient, adicione a seguinte instrução utilizando na parte superior do codebehind:
    using System.Data.SqlClient;
    					
    Nota : os outros espaços de nomes que tem de ter para esta aplicação Web pequena automaticamente referenciados no projecto quando cria uma aplicação Web no Visual Studio. NET.

  17. Procedimento de evento Page_Load , criar um objecto de ligação, passando a cadeia de ligação para o construtor predefinido da classe SqlConnection :
    SqlConnection cn = new SqlConnection("server=myserver;uid=myuid;pwd=mypassword;database=northwind");
    					
  18. Crie um objecto SqlCommand, em seguida, é transmitido para o objecto SqlDataAdapter. Passe uma instrução de SQL improvised e o novo objecto de ligação para o Construtor de SqlCommand. O primeiro define a propriedade CommandText do novo objecto SqlCommand. Também pode transmitir o nome de um procedimento armazenado.
    SqlCommand cmd = new SqlCommand("select * from [Alphabetical list of products]", cn);
    					
  19. Criar uma instância do objecto a SqlDataAdapter, passando o novo objecto SqlCommand do construtor:
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    					
  20. Agora criar os objectos que são necessários para ligar à base de dados e devolver dados. Segue-se o código para a letra de imprensa DataSet . Tenha em atenção que é criada uma instância da classe dsProducts : a classe que mapeia para o esquema dsProducts e herda da classe DataSet , não genérica DataSet própria classe.
    dsProducts tds = new dsProducts();
    					
  21. Chamar o método preenchimento de SqlDataAdapter, passando no objecto de DataSet escrito e do DataSet escrito propriedade DataTable TableName :
    da.Fill(tds, tds.Tables[0].TableName);
    					
  22. Para definir a propriedade Text do texto controlos de caixa para as colunas tipos seguro digitado DataSet do DataTable , utilize o seguinte formato:
    dsProducts.DataTableName[RowIndex].ColumnName
    						
    para esta aplicação de exemplo, o RowIndex está programada para 5:
    TextBox1.Text = tds.Alphabetical_list_of_products[5].ProductName;
    TextBox2.Text = tds.Alphabetical_list_of_products[5].CategoryName; 
    						
    uma vez que a colecção de linhas é baseado em zero, quando a página é carregada, note que os controlos de caixa de texto apresentar os nomes de produto e categoria do produto na linha sexta de DataGrid .
  23. Para apresentar todos os resultados em DataGrid , defina a propriedade origem de dados de DataGrid para o novo digitado DataSet e chamar DataBind() :
    DataGrid1.DataSource = tds;
    DataGrid1.DataBind();
    					

Concluir código lista (WebForm1.aspx)

<%@ 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>
				

Concluir código lista (WebForm1.aspx.cs)

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
  }
}

				

Verificação

Prima F5 para executar a aplicação Web. O browser apresenta "Uncle João Organic frutos Pêras" na caixa de texto do produto e "Produtos agrícolas" na caixa de texto categoria . Um DataGrid é preenchido com informações sobre o produto é apresentado em caixas de texto.

Resolução de problemas

  • Genérico DataSets não é necessário que passar um TableName quando chamar o método de preenchimento . Escreveu DataSets , contudo, requerer, mesmo se está acessando colecção de tabelas do DataSet pelos índices em vez de TableName . Se não conseguir passar digitado DataSet do TableName lança um erro "não está nenhuma linha na posição 0" em tempo de execução. Este requisito digitado DataSets também significa que não é possível constituem as suas próprias TableName mas tem de passar aquele que é referenciado na classe DataSet digitada, que é acedida como no código anterior.
  • Quaisquer alterações manuais que efectuar o esquema que é gerado pelo Visual Studio .NET são substituídas se alterar o objecto de base de dados utilizado inicialmente para gerar o esquema e escreveu DataSet classe e arraste-o novamente para vista de estrutura do esquema. É geralmente preferível para efectuar as alterações que tenha de ser ao nível do Microsoft SQL Server e para gerar um novo digitado DataSet que para alterar o esquema resultante.

Referências

Para mais informações sobre como trabalhar com uma letra de imprensa DataSet , consulte o seguinte Web site da Microsoft:
http://msdn2.microsoft.com/en-us/library/esbykkzb(vs.71).aspx


Propriedades

Artigo: 320714 - Última revisão: 17 de maio de 2007 - Revisão: 2.3
A informação contida neste artigo aplica-se 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
Palavras-chave: 
kbmt kbhowtomaster KB320714 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 320714

Submeter comentários

 

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