Artigo: 314145 - Última revisão: quinta-feira, 29 de Março de 2007 - Revisão: 3.6

Como preencher um objecto de DataSet a partir de uma base de dados utilizando o Visual C# .NET

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

Objectos DataSet, uma parte de chave de acesso a dados no Microsoft .NET Framework, são objectos de memória que podem conter tabelas, vistas e relações. Este artigo demonstra como preencher um objecto de DataSet com os resultados de uma ou mais consultas de base de dados e como aceder a esses dados depois de este é carregado para o objecto DataSet.

Requisitos

A lista seguinte descreve o hardware recomendado, software, infra-estrutura de rede e service packs que necessita:
  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server ou Windows NT 4.0 Server
  • Microsoft SQL Server 7.0, Microsoft SQL Server 2000 ou Microsoft Data Engine com a base de dados de exemplo Pubs instalado
  • Microsoft Visual Studio .NET
Este artigo pressupõe que está familiarizado com os seguintes tópicos:
  • Terminologia de base de dados
  • Linguagem de consulta estruturada (SQL)

Preencher um DataSet

Utilizando uma variedade de objectos no espaço de nomes System.data, pode ligar a um servidor de base de dados, executar uma consulta e os resultados tenham colocados num objecto de DataSet. O DataSet é um objecto desligado. Por conseguinte, depois os dados são carregados, a ligação à base de dados já não é utilizada até que pretende carregar mais dados ou actualizar o servidor com as alterações efectuadas à cópia de memória da informação.

Para carregar dados a partir de uma base de dados para um DataSet, siga estes passos:
  1. Inicie o Visual Studio NET..
  2. Crie um novo projecto de aplicação de consola no Visual C#. NET. Visual Studio .NET cria uma classe estática, juntamente com um procedimento principal vazio.
  3. Certifique-se de que o projecto referencia os espaços de nomes do sistema e System.data.
  4. Utilize a instrução a utilizar em espaços de nomes System.data.SqlClient, System.data e sistema para que não é necessário para qualificar as declarações destes espaços de nomes mais tarde no código. Tem de utilizar estas instruções antes de quaisquer outras declarações.
    using System;
    using System.Data;
    using System.Data.SqlClient;
    					
  5. O primeiro passo para obter dados da base de dados para o DataSet é estabelecer uma ligação de base de dados, que requer um objecto System.Data.SqlClient.SqlCommand e uma cadeia de ligação. A cadeia de ligação no código a seguir liga um servidor de SQL Server que está localizado no computador local (o computador onde o código está a ser executado). Tem de modificar esta cadeia de ligação conforme apropriado para o ambiente. Depois de criar o objecto SqlConnection, chamar o método Open desse objecto para estabelecer a ligação de base de dados reais.
    string sConnectionString;
    sConnectionString = "Password=myPassword;User ID=myUserID;"
      					   + "Initial Catalog=pubs;"
    						+ "Data Source=(local)";
    SqlConnection objConn
    	= new SqlConnection(sConnectionString);
    objConn.Open();
    					
  6. Crie um objecto de ' DataAdapter ', que representa a ligação entre a base de dados e o objecto DataSet. Pode especificar SQL ou outro tipo de comando é utilizado para obter dados como parte do objecto de construtor do ' DataAdapter '. Este exemplo utiliza uma instrução de SQL que obtém registos da tabela Authors na base de dados Pubs.
    SqlDataAdapter daAuthors 
    	= new SqlDataAdapter("Select * From Authors", objConn);
    					
  7. Deve declarar e criar uma instância de um objecto DataSet, momento em que pode fornecer um nome para o inteiro DataSet antes de começar a carregar quaisquer dados. O nome pode conter várias tabelas distintas.
    DataSet dsPubs = new DataSet("Pubs");
    					
  8. A classe SqlDataAdapter fornece dois métodos, preenchimento e FillSchema, que são cruciais para carregar estes dados. Ambos os métodos carregar informações para um DataSet. Preencher carrega os dados propriamente ditos e FillSchema carrega todos os metadados disponíveis sobre uma tabela específica (como, por exemplo, nomes de colunas, chaves primárias e restrições). Uma boa maneira de tratar os carregamento de dados consiste em executar FillSchema seguido de preenchimento. Por exemplo:
    daAuthors.FillSchema(dsPubs,SchemaType.Source, "Authors");
    daAuthors.Fill(dsPubs,"Authors");
    						
    se utilizar apenas o preenchimento, pode apenas carregar metadados básicos que é necessário para descrever o tipo de nomes e dados de coluna. O método de preenchimento não carrega informações da chave primárias. Para alterar este comportamento predefinido, pode definir a propriedade MissingSchemaAction do objecto ' DataAdapter ' para MissingSchemaAction.AddWithKey, que carrega os metadados de chave primário juntamente com as informações predefinidas. Por exemplo:
    daAuthors.MissingSchemaAction = MissingSchemaAction.AddWithKey;
    daAuthors.Fill(dsPubs,"Authors");
    					
  9. Os dados estão agora disponíveis como um objecto individual do DataTable contido na colecção de tabelas do DataSet. Se tiver especificado um nome de tabela em chamadas FillSchema e preenchimento, pode utilizar esse nome para aceder à tabela específica que pretende.
    DataTable tblAuthors;
    tblAuthors = dsPubs.Tables["Authors"];
    					
  10. Pode utilizar um para cada ciclo para ciclo através de todos os objectos de DataRow contido na colecção de linhas de uma DataTable. Isto permite-lhe aceder a cada linha da tabela. Pode aceder a colunas por nome ou índice posicional (por '0' a ser a primeira posição da coluna). Por exemplo:
    foreach (DataRow drCurrent in tblAuthors.Rows)
    {
    	Console.WriteLine("{0} {1}",
    		drCurrent["au_fname"].ToString(),
    		drCurrent["au_lname"].ToString());
    }
    Console.ReadLine();
    					
  11. Guarde o projecto. No menu de depuração, clique em Iniciar para executar o projecto e certifique-se de que funciona.

Concluir lista de código

using System;
using System.Data;
using System.Data.SqlClient;

namespace PopulateDataSet
{
	/// <summary>
	/// Summary description for Class1.
	/// </summary>
	class Class1
	{
		static void Main(string[] args)
		{
			string sConnectionString;
			sConnectionString = "Password=myPassword;User ID=myUserID;"
								+ "Initial Catalog=pubs;"
								+ "Data Source=(local)";
			SqlConnection objConn
				= new SqlConnection(sConnectionString);
			objConn.Open();

			SqlDataAdapter daAuthors 
				= new SqlDataAdapter("Select * From Authors", objConn);
			DataSet dsPubs = new DataSet("Pubs");
			daAuthors.FillSchema(dsPubs,SchemaType.Source, "Authors");
daAuthors.Fill(dsPubs,"Authors");

			DataTable tblAuthors;
			tblAuthors = dsPubs.Tables["Authors"];

			foreach (DataRow drCurrent in tblAuthors.Rows)
			{
				Console.WriteLine("{0} {1}",
					drCurrent["au_fname"].ToString(),
					drCurrent["au_lname"].ToString());
			}
			Console.ReadLine();
		}
	}
}
				

Referências

Para mais informações sobre o ADO.NET, objectos DataSet e SQL, consulte os seguintes Web sites da Microsoft:
"Mergulho para acesso a dados" (uma coluna Vozes da MSDN por Dino Esposito)
http://msdn2.microsoft.com/en-us/library/ms810293.aspx (http://msdn2.microsoft.com/en-us/library/ms810293.aspx)

ADO.NET para o programador do ADO
http://msdn2.microsoft.com/en-us/library/ms973217.aspx (http://msdn2.microsoft.com/en-us/library/ms973217.aspx)

MSDN online .NET Developer Center
http://msdn.microsoft.com/en-us/netframework/default.aspx (http://msdn.microsoft.com/en-us/netframework/default.aspx)

A informação contida neste artigo aplica-se a:
  • Microsoft ADO.NET 1.0
  • Microsoft ADO.NET 1.1
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Palavras-chave: 
kbmt kbhowtomaster kbsqlclient kbsystemdata KB314145 KbMtpt
Tradução automáticaTraduçã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: 314145  (http://support.microsoft.com/kb/314145/en-us/ )