Как заполнить объект DataSet из базы данных с помощью Visual C++.NET или Visual C++ 2005

Переводы статьи Переводы статьи
Код статьи: 818779 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

Эта статья содержит пошаговые инструкции для заполнения набора данных объект с результатами выполнения одного или нескольких запросов к базам данных и доступе данные после запроса загружается в объект DataSet. Объекты набора данных объекты в памяти, который может содержать таблицы, представления и связи этой формы ключевой частью доступа к данным в Microsoft.NET Framework.


Дополнительная информация

Требования

В следующем списке представлены рекомендуемого оборудования, программного обеспечения, сетевой инфраструктуры и пакетов обновления, необходимо иметь:
  • Microsoft Windows 2000 для Microsoft Windows 2000 Professional Сервер Microsoft Windows 2000 Advanced Server или Microsoft Windows NT 4.0 Сервер
  • Microsoft SQL Server 7.0, Microsoft SQL Server 2000, или Модуль данных Майкрософт с помощью установки образца базы данных Pubs
  • Microsoft Visual Studio.NET или Microsoft Visual Studio 2005 г.
В данной статье предполагается, что вы знакомы со следующими разделы:
  • Терминология баз данных
  • Microsoft SQL Server


Заполнение набора данных

С помощью различных объектов в пространстве имен System.Data, можно подключиться к серверу базы данных, выполнить запрос и затем поместить результаты в объекте DataSet. Набор данных — это отключенный объект. Таким образом, после Загрузка данных, подключение к базе данных больше не используется, пока не требуется Чтобы загрузить дополнительные данные или обновление сервера с учетом изменений, внесенных в в памяти копию данных.

Для загрузки данных из базы данных набор данных выполните следующие действия.
  1. Запустите Visual Studio.NET или Visual Studio 2005.
  2. Создайте новое приложение управляемого C++ в Visual C++.NET 2002 г., или создайте новое консольное приложение в Visual C++.NET 2003 или создать новое консольное приложение CLR в Visual C++ 2005. Имя проектаMyApplication и выберите командуОК.
  3. Добавьте следующий код для MyApplication.cpp файл.

    Это добавляет ссылку на пространство имен System.Dll Пространство имен System.XML, а пространство имен System.Data.
    #using <System.Dll>
    #using <System.Data.Dll>
    #using <System.Xml.Dll>
    
  4. Использование С ПОМОЩЬЮ оператор в пространстве имен System, пространства имен System.Data Пространство имен System.XML, имен System.Collections и Пространство имен System.Data.SqlClient таким образом, нет необходимости указывать объявления из этих пространств имен в коде. Необходимо использовать эти инструкции перед другие объявления.
    using namespace System;
    using namespace System::Data;
    using namespace System::Xml;
    using namespace System::Collections;
    using namespace System::Data::SqlClient;
    
  5. Переместите данные из базы данных в набор данных.

    Для сделать это, необходимо установить подключение к базе данных. Для этого необходимо Объект System.Data.SqlClient.SqlCommand и строку соединения. Подключение Строка кода подключается компьютер, на котором запущен SQL Server расположенные на локальном компьютере (компьютере, где выполняется код). Вы должны Измените эту строку подключения в зависимости от среды. После Создается объект SqlConnection, позвоните в Открыть метод объекта для установления связи фактической базы данных.
    SqlConnection* objConn;
    String* sConnectionString;
    sConnectionString = "Password=myPassword;User ID=myUserID;Initial Catalog=pubs;Data Source=(local)";
    
    objConn = new SqlConnection(sConnectionString);
    objConn->Open();
    
  6. Создайте объект DataAdapter, который представляет связь между базой данных и объектом DataSet. Укажите SQL Server или команда, используемая для извлечения данных как часть другого типа конструктор объекта DataAdapter. Следующий пример использует SQL оператор, который извлекает записи из Авторы Таблица вPubs База данных.
    SqlDataAdapter* daAuthors = new SqlDataAdapter("Select * From Authors", objConn);
    
  7. Объявите и создайте экземпляр набора данных объект.

    При этом необходимо указать имя для всего набора данных Перед началом загрузки любых данных. Имя может содержать несколько различных таблицы.
    DataSet* dsPubs = new DataSet("Pubs");
  8. Запустить FillSchema А затем еще одно сообщение Заливка При обработке загрузки данных.

    В SqlDataAdapter класс предоставляет два метода Заливка метод и FillSchema метод, который имеют решающее значение для загрузки данных. Оба эти метода Загрузка данных в набор данных. В Заливка метод загружает данные и FillSchema метод загружает все доступные метаданные о конкретной таблицы (например, имена столбцов, первичные ключи и ограничения).
    daAuthors->FillSchema(dsPubs,SchemaType::Source, "Authors");
    daAuthors->Fill(dsPubs,"Authors");
    

    Если используется только Заливка, можно загружать только основные метаданные, которые необходимы для описания имен столбцов и типов данных. В Заливка метод не загружает сведения о первичном ключе. Чтобы изменить эту настройку поведение по умолчанию можно установить MissingSchemaAction свойство объекта DataAdapter для MissingSchemaAction.AddWithKey. Это загружаются метаданные первичного ключа в значение по умолчанию сведения.
    daAuthors->MissingSchemaAction = MissingSchemaAction::AddWithKey;
    daAuthors->Fill(dsPubs,"Authors");
    
    Данные теперь доступна как отдельный объект DataTable в Коллекция таблиц набора данных. Если указать имя таблицы для вызовов FillSchema а также Заливка, можно использовать это имя для доступа к определенной таблице, которые требуется.
    DataTable* tblAuthors = dsPubs->Tables->Item["Authors"];
    
  9. Использование GetEnumerator функции для доступа к объектов DataRow в коллекции Rows элемента объект DataTable. Используйте цикл while для итерации в каждой строке таблицы. Можно получить доступ к столбцы, по имени или индекса позиции. Ноль (0) является первой позиции столбца.
    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. Сохраните проект. На Отладка меню Нажмите кнопку Начало для запуска проекта.



Полный пример кода

// 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;
}
Примечание Необходимо добавить параметр компилятора поддержки среды (/ CLR: oldSyntax) в Visual C++ 2005 для успешной компиляции кода пример. Чтобы добавить параметр компилятора поддержки среды Visual C++ 2005, выполните следующие действия.
  1. Нажмите кнопку Проект, а затем нажмите кнопку<projectname></projectname> Свойства.

    Примечание <projectname></projectname> — это имя удаленного компьютера для этого проекта.
  2. Разверните узел Свойства конфигурации, а затем Нажмите кнопку Общие.
  3. Выберите Поддержка Common Language Runtime Старый синтаксис (/ CLR: oldSyntax) В диалоговом окне Общеязыковая среда выполнения Поддержка проект настройки на правой панели, нажмите кнопкуПрименение, а затем нажмите кнопку ОК.
Для получения дополнительных сведений о поддержка common language runtime Компилятор параметр, посетите следующий веб-узел корпорации Майкрософт:
/ CLR (common Language Runtime Compilation)
http://msdn2.Microsoft.com/en-us/library/k8d11d4s.aspx

Ссылки

Для получения дополнительных сведений посетите следующий веб-узла корпорации Майкрософт сайты:

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

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

http://MSDN.Microsoft.com/NET

Свойства

Код статьи: 818779 - Последний отзыв: 14 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • 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
Ключевые слова: 
kbsystemdata kbsqlclient kbhowtomaster kbhowto kbmt KB818779 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:818779

Отправить отзыв

 

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