Objetos
DataSet, uma parte essencial do acesso a dados no Microsoft .NET Framework, são objetos de memória que podem conter tabelas, exibições e relações. Este artigo demonstra como preencher um objeto
DataSet com os resultados de uma ou mais consultas de banco de dados e como acessar os dados depois que ele é carregado no objeto de
DataSet.
Requisitos
A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que você precisa:
- O 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 o banco de dados de exemplo Pubs instalado
- Microsoft Visual Studio .NET
Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:
- Terminologia de banco de dados
- Linguagem de consulta estruturada (SQL)
Preenchendo um DataSet
Usando uma variedade de objetos de dentro do namespace
System.Data, você pode se conectar a um servidor de banco de dados, executar uma consulta e colocou os resultados em um objeto
DataSet. O
DataSet é um objeto desconectado. Portanto, após os dados carregados, a conexão com o banco de dados não é mais usada até que você deseja carregar mais dados ou atualizar o servidor com as alterações feitas na sua cópia de memória das informações.
Para carregar dados de um banco de dados em um
DataSet, siga estas etapas:
- Inicie o Visual Studio NET..
- Crie um novo projeto Console Application no Visual translation from VPE for Csharp NET.. O Visual Studio .NET cria uma classe estática para você, juntamente com um procedimento principal vazio.
- Certifique-se de que o projeto faz referência os namespaces System.Data e sistema.
- Use a instrução usando sobre os espaços para nome System.Data.SqlClient, System.Data e sistema para que você não precisa qualificar declarações desses namespaces posteriormente no seu código. Você deve usar estas instruções antes de qualquer outra declaração.
using System;
using System.Data;
using System.Data.SqlClient;
- A primeira etapa para obter dados do banco de dados para o DataSet é estabelecer uma conexão de banco de dados, que exige um objeto System.Data.SqlClient.SqlCommand e uma seqüência de caracteres de conexão. A seqüência de conexão no código a seguir se conecta a um servidor SQL Server que está localizado no computador local (o computador onde o código está sendo executado). Você deve modificar essa seqüência de caracteres de conexão conforme apropriado para seu ambiente. Depois que o objeto SqlConnection é criado, chamar o método Open do objeto para estabelecer o vínculo do banco de dados real.
string sConnectionString;
sConnectionString = "Password=myPassword;User ID=myUserID;"
+ "Initial Catalog=pubs;"
+ "Data Source=(local)";
SqlConnection objConn
= new SqlConnection(sConnectionString);
objConn.Open();
- Crie um objeto DataAdapter, que representa o link entre o banco de dados e seu objeto de DataSet. Você pode especificar SQL ou outro tipo de comando que é usado para recuperar dados como parte do objeto do construtor do DataAdapter. Este exemplo utiliza uma instrução SQL que recupera registros da tabela autores no banco de dados Pubs.
SqlDataAdapter daAuthors
= new SqlDataAdapter("Select * From Authors", objConn);
- Tem de declarar e criar uma instância de um objeto DataSet, momento em que você pode fornecer um nome para o DataSet inteiro antes de começar a carregar quaisquer dados. O nome pode conter várias tabelas distintas.
DataSet dsPubs = new DataSet("Pubs");
- A classe SqlDataAdapter fornece dois métodos, preenchimento e FillSchema, que são cruciais para carregar esses dados. Esses dois métodos carregar informações em um DataSet. Preencher carrega os dados propriamente ditos e FillSchema carrega todos os metadados disponíveis sobre uma determinada tabela (como nomes de colunas, chaves primárias e restrições). Uma boa maneira de lidar com os carregamento de dados é executar FillSchema seguido de preenchimento. Por exemplo:
daAuthors.FillSchema(dsPubs,SchemaType.Source, "Authors");
daAuthors.Fill(dsPubs,"Authors");
se você usar apenas preenchimento, você pode carregar apenas os metadados básicos necessárias para descrever os tipos de dados e nomes de coluna. O método Fill não carrega informações de chave primária. Para alterar esse comportamento padrão, você pode definir a propriedade MissingSchemaAction do objeto DataAdapter para MissingSchemaAction.AddWithKey, que carrega os metadados de chave primário juntamente com as informações padrão. Por exemplo:
daAuthors.MissingSchemaAction = MissingSchemaAction.AddWithKey;
daAuthors.Fill(dsPubs,"Authors");
- Os dados agora estão disponíveis como um objeto DataTable individual dentro da coleção Tables do DataSet. Se você tiver especificado um nome de tabela nas chamadas FillSchema e preenchimento, você pode usar esse nome para acessar a tabela específica que você deseja.
DataTable tblAuthors;
tblAuthors = dsPubs.Tables["Authors"];
- Você pode usar um for each loop para loop por todos os objetos DataRow dentro da coleção de linhas de uma DataTable. Isso permite o acesso a cada linha da tabela. Você pode acessar colunas por nome ou índice posicional (com '0' sendo 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();
- Salve seu projeto. No menu Debug, clique em Iniciar para executar seu projeto e certifique-se de que ele funciona.
Concluída a listagem 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();
}
}
}
Para obter mais informações sobre o ADO.NET, objetos
DataSet e SQL, consulte os seguintes sites da Microsoft: