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

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

Nesta página

Sumário

Este artigo passo a passo descreve como preencher um DataSet objecto com os resultados de uma ou mais consultas de base de dados e como aceder aos dados depois da consulta é carregada no objecto DataSet. Os objectos de DataSet são objectos de memória que podem conter tabelas, vistas e relações que formam uma parte de chave de acesso a dados no Microsoft .NET Framework.


Mais Informação

Requisitos

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


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, em seguida, os resultados colocou num objecto DataSet. O DataSet é um objecto ligado. Por conseguinte, depois de carregados os dados, a ligação à base de dados já não é utilizada até que pretende carregar mais dados ou para actualizar o servidor com as alterações que efectuou a cópia de memória das informações.

Para carregar dados a partir de uma base de dados para um DataSet, siga estes passos:
  1. Inicie o Visual Studio .NET ou Visual Studio 2005.
  2. Criar uma nova aplicação C++ gerida no Visual C++ .NET 2002 ou criar uma nova aplicação de consola no Visual C++ .NET 2003 para criar uma nova aplicação de consola CLR no Visual C++ 2005. Nome do projecto MinhaAplicação e, em seguida, clique em OK .
  3. Adicione o seguinte código a MyApplication.cpp ficheiro.

    Esta acção adiciona uma referência para o espaço de nomes System.Dll, o espaço de nomes System.XML e o espaço de nomes System.data.
    #using <System.Dll>
    #using <System.Data.Dll>
    #using <System.Xml.Dll>
    
  4. Utilize a instrução USING no espaço de nomes de sistema, o espaço de nomes System.data, o espaço de nomes System.XML, o espaço de nomes System.Collections e o espaço de nomes System.data.SqlClient para que não é necessário que qualificar 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 namespace System;
    using namespace System::Data;
    using namespace System::Xml;
    using namespace System::Collections;
    using namespace System::Data::SqlClient;
    
  5. Mova os dados da base de dados para o DataSet.

    Para efectuar este procedimento, tem de estabelecer uma ligação à base de dados. Isto requer que um objecto System.Data.SqlClient.SqlCommand e uma cadeia de ligação. A cadeia de ligação no código liga um computador com o SQL Server que está localizado no computador local (o computador em que o código é 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. objConn
    SqlConnection* objConn;
    String* sConnectionString;
    sConnectionString = "Password=myPassword;User ID=myUserID;Initial Catalog=pubs;Data Source=(local)";
    
    objConn = new SqlConnection(sConnectionString);
    objConn->Open();
    
  6. Crie um objecto ' DataAdapter ' representa a ligação entre a base de dados e o objecto de DataSet. Pode especificar o SQL Server ou outro tipo de comando é utilizado para obter dados como parte do objecto construtor do ' DataAdapter '. O exemplo seguinte utiliza um SQL instrução que obtém registos da tabela Authors na base de dados pubs .
    SqlDataAdapter* daAuthors = new SqlDataAdapter("Select * From Authors", objConn);
    
  7. Declarar e, em seguida, criar uma instância de um DataSet objecto.

    Quando o fizer, tem de fornecer um nome para o DataSet todo antes de começar carregar quaisquer dados. O nome pode conter tabelas várias distintos.
    DataSet* dsPubs = new DataSet("Pubs");
  8. Execute FillSchema seguido de preenchimento ao processar o carregamento de dados.

    A classe SqlDataAdapter fornece dois métodos, o método de preenchimento e o método FillSchema , que são cruciais para carregar dados. Estes dois métodos carregar as informações para um DataSet. O método preenchimento carrega os dados e o método FillSchema carrega todos os metadados disponíveis sobre uma tabela específica (como os nomes das colunas, chaves primárias e restrições).
    daAuthors->FillSchema(dsPubs,SchemaType::Source, "Authors");
    daAuthors->Fill(dsPubs,"Authors");
    

    Se utilizar apenas o preenchimento , pode apenas carregar os metadados básicos que tem de ter para descrever os nomes das colunas e os tipos de dados. O método de preenchimento não carrega as informações de chaves primárias. Para alterar este comportamento predefinido, pode definir a propriedade MissingSchemaAction do objecto ' DataAdapter ' para MissingSchemaAction.AddWithKey . Este procedimento carrega os metadados de chave primário em conjunto com as informações predefinidas.
    daAuthors->MissingSchemaAction = MissingSchemaAction::AddWithKey;
    daAuthors->Fill(dsPubs,"Authors");
    
    os dados estão agora disponíveis como um objecto DataTable individual na colecção de tabelas do DataSet. Se especificar um nome de tabela em chamadas para FillSchema e para preencher , pode utilizar esse nome para aceder à tabela específica que necessita.
    DataTable* tblAuthors = dsPubs->Tables->Item["Authors"];
    
  9. Utilize a função GetEnumerator para acessar os objetos DataRow na colecção de linhas de DataTable. Utilizar ao ciclo para cada linha da tabela de iteração. Pode aceder a colunas por nome ou pelo índice posicional. Zero (0) é a primeira posição da coluna. iEnum
    IEnumerator* iEnum = tblAuthors->Rows->GetEnumerator();
            
     while(iEnum->MoveNext())
     {
            Console::WriteLine("{0}   {1}",dynamic_cast<String*>(dynamic_cast<DataRow *>(iEnum->Current)->get_Item("au_fname")),
                                           dynamic_cast<String*>(dynamic_cast<DataRow *>(iEnum->Current)->get_Item("au_lname")));
     }
    
  10. Guarde o projecto. No menu Debug , clique em Iniciar para executar o projecto.



Concluir lista de código

// This is the main project file for the VC++ application project 
// that is generated by using the Application wizard.

#include "stdafx.h"

#using <mscorlib.dll>
#include <tchar.h>
#using <System.Dll>
#using <System.Data.Dll>
#using <System.Xml.Dll>

using namespace System;
using namespace System::Data;
using namespace System::Xml;
using namespace System::Collections;
using namespace System::Data::SqlClient;

// This is the entry point for this application.
int _tmain(void)
{
    SqlConnection* objConn;
    try
    {

        
        String* sConnectionString;
        sConnectionString = "Password=myPassword;User ID=myUserID;Initial Catalog=pubs;Data Source=(local)";

        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 = dsPubs->Tables->Item["Authors"];
        
        IEnumerator* iEnum = tblAuthors->Rows->GetEnumerator();
        
        while(iEnum->MoveNext())
        {
            Console::WriteLine("{0}   {1}",dynamic_cast<String*>(dynamic_cast<DataRow *>(iEnum->Current)->get_Item("au_fname")),
                                           dynamic_cast<String*>(dynamic_cast<DataRow *>(iEnum->Current)->get_Item("au_lname")));
            
        }
    }
    catch(Exception *ex)
    {
        Console::WriteLine( ex->Message );
    }
    __finally
    {
        objConn->Close();
    }
    
    return 0;
}
Nota Tem de adicionar a opção de compilador do suporte de tempo de execução idioma comum (/ clr:oldSyntax) no Visual C++ 2005 a compilação com êxito o anterior exemplo de código. Para adicionar a opção de compilador do suporte de tempo de execução idioma comum no Visual C++ 2005, siga estes passos:
  1. Clique em Project e, em seguida, clique em <ProjectName> propriedades .

    Nota <ProjectName> é um marcador de posição para o nome do projecto.
  2. Expanda Propriedades de configuração e, em seguida, clique em Geral .
  3. Clique para seleccionar Runtime do idioma comum suporte, sintaxe antigo (/ clr:oldSyntax) na definição de projecto Common Language Runtime suporte no painel da direita, clique em Aplicar e, em seguida, clique em OK .
Para obter mais informações sobre o common language runtime suporte a opção do compilador, visite o seguinte Web site da Microsoft:
/ clr (Common Language Runtime compilação)
http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx

Referências

Para obter mais informações, visite os seguintes Web sites da Microsoft:

http://msdn2.microsoft.com/en-us/library/ms810293.aspx

http://msdn2.microsoft.com/en-us/library/ms973217.aspx

http://msdn.microsoft.com/net

Propriedades

Artigo: 818779 - Última revisão: 16 de maio de 2007 - Revisão: 3.2
A informação contida neste artigo aplica-se a:
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C++ .NET 2002 Standard Edition
  • Microsoft ADO.NET 1.1
  • Microsoft ADO.NET 1.0
Palavras-chave: 
kbmt kbsystemdata kbsqlclient kbhowtomaster kbhowto KB818779 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: 818779

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