Visual C++ .NET veya Visual C++ 2005 kullanarak bir veritabanındaki bir DataSet nesnesi doldurmak için

Makale çevirileri Makale çevirileri
Makale numarası: 818779 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu adım adım makalede, bir DataSet doldurmak açıklamaktadır bir veya daha fazla veritabanı sorgularını ve sorgu DataSet nesnesinde yüklendikten sonra verilere nasıl sonuçlarını içeren nesne. DataSet, tablolar, görünümler ve veri erişimi önemli bir bölümünü Microsoft .NET Framework'de form ilişkileri tutan bellek içi nesneleri nesneleridir.


Daha fazla bilgi

Gereksinimler

Aşağıdaki listede önerilen donanım, yazılım, ağ altyapısı ve gereken hizmet paketleri önerilmektedir:
  • Server veya Microsoft Windows NT 4.0, Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server
  • Microsoft SQL Server 7.0, Microsoft SQL Server 2000 veya Microsoft Data Engine yüklü Pubs Örnek veritabanı
  • Microsoft Visual Studio .NET veya Microsoft Visual Studio 2005
Bu makalede, aşağıdaki konularda bilgi sahibi olduğunuz varsayılmaktadır:
  • Veritabanı terminolojisi
  • Microsoft SQL Server


Bir DataSet doldurun.

System.Data ad alanında değişik nesneleri kullanarak, bir veritabanı sunucusuna bağlanmak, bir sorguyu çalıştırmak ve sonuçları bir DataSet nesnesinde ardından geleni. DataSet, bağlantısı kesilen bir nesnedir. Veriler yüklendiği sonra daha fazla veri yüklenemedi veya sunucu için bilgileri bellek içindeki kopyasını yaptığınız değişikliklerle güncelleştirmek için istediğiniz kadar bu nedenle, veritabanı bağlantısı artık kullanılmamaktadır.

Verileri bir veritabanından bir DataSet'e yüklemek için <a0></a0>, aşağıdaki adımları izleyin:
  1. Visual Studio .NET veya Visual Studio 2005'i başlatın.
  2. Visual C++ .NET 2002'de yeni bir C++ yönetilen uygulama oluşturmak veya Visual C++ .NET 2003'te yeni bir konsol uygulaması oluşturun veya Visual C++ 2005'te yeni bir CLR konsol uygulaması oluşturun. Projeyi MyApplication ve Tamam ' ı tıklatın.
  3. Aşağıdaki kodu için MyApplication.cpp ekleyin dosya.

    Bu, System.Data ad System.Dll ad ve System.XML ad alanı için bir başvuru ekler.
    #using <System.Dll>
    #using <System.Data.Dll>
    #using <System.Xml.Dll>
    
  4. Bu ad boşluklarında kodunuzu daha sonra gelen bildirimleri nitelemek sahip olacak biçimde KULLANARAK ifade System ad, System.Data ad, System.XML ad alanı, System.Collections ad ve System.Data.SqlClient ad (^) karakterlerini kullanın. Önce tüm diğer bildirimler.
    using namespace System;
    using namespace System::Data;
    using namespace System::Xml;
    using namespace System::Collections;
    using namespace System::Data::SqlClient;
    
    Bu ifadeler kullanmalısınız
  5. Verileri veritabanından veri kümesi için taşıyın.

    Bunu yapmak için <a0></a0>, veritabanı bağlantısı oluşturmanız gerekir. Bu bir System.Data.SqlClient.SqlCommand nesnesi bir bağlantı dizesi gerektirir. Bağlantı dizesinde kodu (burada kod çalışır bilgisayar) yerel bilgisayarda bulunan bir SQL Server çalıştıran bir bilgisayara bağlar. Bu bağlantı dizesini ortamınıza uygun olarak değiştirmelisiniz. SqlConnection nesne oluşturulduktan sonra gerçek bir veritabanına bağlantı kurmak için bu nesnenin Open yöntemini çağırın.
    SqlConnection* objConn;
    String* sConnectionString;
    sConnectionString = "Password=myPassword;User ID=myUserID;Initial Catalog=pubs;Data Source=(local)";
    
    objConn = new SqlConnection(sConnectionString);
    objConn->Open();
    
  6. DataSet nesneniz ile veritabanı arasındaki bağlantıyı temsil eden bir DataAdapter oluşturun. SQL Server'ı veya başka türde bir DataAdapter oluşturucu nesnesinin bir parçası olarak veri almak için kullanılan komut belirtebilirsiniz. Aşağıdaki örnek, bir SQL kullanan pubs veritabanı. Authors tablosundaki kayıtları alır deyimi
    SqlDataAdapter* daAuthors = new SqlDataAdapter("Select * From Authors", objConn);
    
  7. Bildirmeyi ve sonra bir DataSet örneğini nesne.

    Bunu yaptığınızda, herhangi bir veriyi geri yüklemeye başlamadan önce tüm veri kümesi için bir ad sağlamalısınız. Adın birkaç farklı tablo içerebilir.
    DataSet* dsPubs = new DataSet("Pubs");
  8. FillSchema veri yükleniyor işlerken ardından Dolgu çalıştırın.

    SqlDataAdapter sınıfı, iki yöntemi, <a2>Dolgu yöntemi</a2> ve <a4>Bu veri yükleme için önemli olan FillSchema yöntemi sağlar. Her iki yöntem DataSet bilgileri yüklenemedi. Fill yöntemi verinin kendisi yükler ve FillSchema yöntemi (örneğin, sütun adları, birincil anahtar ve kısıtlamaları) belirli bir tablo ile ilgili tüm kullanılabilir meta yükler.
    daAuthors->FillSchema(dsPubs,SchemaType::Source, "Authors");
    daAuthors->Fill(dsPubs,"Authors");
    

    Yalnızca Dolgu kullanırsanız, yalnızca sütun adları ve veri türlerini tanımlamak için gereken temel meta verileri de yükleyebilirsiniz. Fill yöntemi, birincil anahtar bilgilerini yüklemez. Bu varsayılan davranışı değiştirmek için <a0></a0>, MissingSchemaAction.AddWithKey için DataAdapter nesnesinin MissingSchemaAction özelliğini ayarlayabilirsiniz. Bu varsayılan bilgilere ek olarak birincil anahtar meta veriler yükler.
    daAuthors->MissingSchemaAction = MissingSchemaAction::AddWithKey;
    daAuthors->Fill(dsPubs,"Authors");
    
    Verileri tek bir DataTable nesneyi DataSet'in Tables koleksiyonunda olarak kullanıma sunulmuştur. FillSchema ve Dolgu için çağrıları, bir tablo adı belirtirseniz, size gereken belirli bir tablo erişmek için bu adı kullanabilirsiniz.
    DataTable* tblAuthors = dsPubs->Tables->Item["Authors"];
    
  9. DataTable, <a1>Satırlar</a1> koleksiyonunda DataRow nesnelere erişmek üzere GetEnumerator işlevini kullanın. Döngü işlemi sırasında tablonun her satırında yineleme yapmak için kullanın. Ad veya konum dizin sütunları erişebilirsiniz. Sıfır (0) ilk sütun konumdur.
    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. Projenizi kaydetmek. Hata Ayıkla menüsünde Proje çalıştırmak için Başlat ' ı tıklatın.



Kod dökümü tamamlayın.

// 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;
}
Not Ortak dil çalışma zamanı desteğini derleyici seçeneği eklemeniz gerekir (/ clr:oldSyntax) başarıyla önceki kod örneğini derlemek için Visual C++ 2005'te. Visual C++ 2005'te ortak dil çalışma zamanı destek derleyici seçeneği eklemek için aşağıdaki adımları izleyin:
  1. Project tıklatın ve sonra <ProjectName> Özellikleri.

    Not<ProjectName> projenin adı için yer tutucudur.
  2. Yapılandırma özellikleri ' ni genişletin ve sonra Genel ' i tıklatın.
  3. Seçmek için tıklatın ortak dil çalışma zamanı modülü ve Destek, eski sözdizimi (/ clr:oldSyntax)Common Language Runtime desteği proje ayarında sağ bölmede, Uygula ' yı tıklatın ve sonra Tamam ' ı tıklatın.
Ortak dil çalıştırma hakkında daha fazla bilgi için derleyici seçeneği destekleyen, aşağıdaki Microsoft Web sitesini ziyaret edin:
/ clr (ortak dil çalışma zamanı derleme)
http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx

Referanslar

Daha fazla bilgi için aşağıdaki Microsoft Web sitelerini ziyaret edin:

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

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

http://msdn.microsoft.com/net

Özellikler

Makale numarası: 818779 - Last Review: 16 Mayıs 2007 Çarşamba - Gözden geçirme: 3.2
Bu makaledeki bilginin uygulandığı durum:
  • 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
Anahtar Kelimeler: 
kbmt kbsystemdata kbsqlclient kbhowtomaster kbhowto KB818779 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:818779

Geri Bildirim Ver

 

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