Makale numarası: 314145 - Son Gözden Geçirme: 29 Mart 2007 Perşembe - Gözden geçirme: 3.6

Nasıl yapılır: bir veritabanından bir DataSet nesnesi, Visual C#. NET'i kullanarak doldurma

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Özet

DataSet, Microsoft .NET Framework, veri erişim anahtarı bir parçası, tablolar, görünümler ve ilişkilerini tutan bellek içi nesneleri nesneleridir. Bu makalede, bir DataSet nesnesi bir veya daha fazla veritabanı sorgularını sonuçlarıyla doldurmak ve bu DataSet nesnesine yüklendikten sonra verilere gösterilmektedir.

Gereksinimler

Aşağıdaki listede, gereksinim duyacağınız donanım, yazılım, ağ altyapısı ve hizmet paketleri önerilmektedir:
  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Server veya Windows NT 4.0 Server Gelişmiş...
  • Microsoft SQL Server 7.0, Microsoft SQL Server 2000 veya Microsoft Data Engine yüklü Pubs Örnek veritabanı
  • Microsoft Visual Studio. NET'i
Bu makalede, aşağıdaki konularda bilgi sahibi olduğunuz varsayılmaktadır:
  • Veritabanı terminolojisi
  • Yapılandırılmış sorgu dili (SQL)

Bir DataSet doldurma

Nesneleri çeşitli gelen System.Data ad alanı içinde bir veritabanı sunucusuna bağlanmak, bir sorgu çalıştırdığınızda ve sonuçları bir DataSet nesnesine yerleştirdiğiniz. DataSet, bağlantısı kesilen bir nesnedir. Sonra verileri yeniden yüklenir, daha fazla veri yüklenemedi veya sunucu için bilgileri bellek içindeki kopyasını yaptığınız değişikliklerle güncelleştirmek istediğiniz kadar bu nedenle, veritabanı bağlantısı artık kullanılmamaktadır.

Verileri bir veritabanından bir DataSet içinde yüklemek için <a0></a0>, aşağıdaki adımları izleyin:
  1. Visual Studio .NET'i başlatın.
  2. Yeni bir konsol uygulaması) projesi, Visual C# .NET ile oluşturun. Visual Studio. NET'in bir statik sınıfı, boş bir ana yordamın birlikte oluşturur.
  3. Proje, Sistem ve System.Data ad başvuran emin olun.
  4. Bu ad boşluklarında kodunuzu daha sonra gelen bildirimleri nitelemek için gerekli değildir, kullanarakSistem ve System.DataSystem.Data.SqlClient ad kullanmak. Bu deyimleri tüm diğer bildirimlerden önce kullanmalısınız.
    using System;
    using System.Data;
    using System.Data.SqlClient;
    					
  5. DataSet veritabanından veri almanın ilk System.Data.SqlClient.SqlCommand bir nesne ve bir bağlantı dizesi gerektiren bir veritabanı bağlantısı kurmak için adımıdır. Bağlantı dizesinde izlemek için bu kodu (kod çalıştığı bilgisayar) yerel bilgisayarda bulunan bir SQL Server sunucusuna bağlanır. 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.
    string sConnectionString;
    sConnectionString = "Password=myPassword;User ID=myUserID;"
      					   + "Initial Catalog=pubs;"
    						+ "Data Source=(local)";
    SqlConnection objConn
    	= new SqlConnection(sConnectionString);
    objConn.Open();
    					
  6. DataSet nesneniz ile veritabanı arasındaki bağlantıyı temsil eden bir DataAdapter nesnesi oluşturun. SQL veya başka türde bir DataAdapter oluşturucu nesnesinin bir parçası olarak veri almak için kullanılan komut belirtebilirsiniz. Bu örnek pubs veritabanındaki Authors tablosundaki kayıtları alır, bir SQL deyimi kullanır.
    SqlDataAdapter daAuthors 
    	= new SqlDataAdapter("Select * From Authors", objConn);
    					
  7. Bildirmek ve hangi zamanda herhangi bir veriyi geri yüklemeye başlamadan önce tüm DataSet için bir ad tedarikini sağlayabilecek bir DataSet nesnesinin bir örneğini oluşturmak gerekir. Ad, birkaç farklı tablo içerebilir.
    DataSet dsPubs = new DataSet("Pubs");
    					
  8. SqlDataAdapter sınıfı, bu veri yükleme için önemli olan iki yöntem, Dolgu ve FillSchema, sağlar. Bu yöntemlerin her ikisi de bir DataSet içinde bilgileri yüklenemedi. Verinin kendisi doldurma ' ı yükler ve FillSchema tüm kullanılabilir meta verileri (örneğin, sütun adları, birincil anahtar ve kısıtlamaları) belirli bir tablo hakkında yükler. Yükleme verileri işlemek için en iyi yolu, Dolgu tarafından izlenen FillSchema çalıştırmaktır. Örneğin:
    daAuthors.FillSchema(dsPubs,SchemaType.Source, "Authors");
    daAuthors.Fill(dsPubs,"Authors");
    						
    , Dolgu kullanmanız, sütun adları ve veri türlerini tanımlamak için gerekli olan temel meta verileri yalnızca yükleyebilirsiniz. Fill yöntemi, birincil anahtar bilgilerini yüklemez. Bu varsayılan davranışı değiştirmek için <a0></a0>, birincil anahtar meta veriler varsayılan bilgilerle birlikte yükleyen MissingSchemaAction.AddWithKey için DataAdapter nesnesinin MissingSchemaAction özelliğini ayarlayabilirsiniz. Örneğin:
    daAuthors.MissingSchemaAction = MissingSchemaAction.AddWithKey;
    daAuthors.Fill(dsPubs,"Authors");
    					
  9. Veri tabloları koleksiyonu DataSet içindeki tek bir DataTable nesneyi olarak kullanıma sunulmuştur. FillSchema ve Dolgu çağrıları, bir tablo adı belirtilmişse, bu adı istediğiniz belirli bir tablo erişmek için kullanabileceğiniz.
    DataTable tblAuthors;
    tblAuthors = dsPubs.Tables["Authors"];
    					
  10. Bir for, her döngü döngü DataRow nesneleri bir DataTable <a1>Satırlar</a1> koleksiyonu içindeki tüm kullanabilirsiniz. Bu tablodaki her satır için erişmenizi sağlar. Ad veya konum dizin sütunları ('ilk sütun konumu olan 0 ile') erişebilirsiniz. Örneğin:
    foreach (DataRow drCurrent in tblAuthors.Rows)
    {
    	Console.WriteLine("{0} {1}",
    		drCurrent["au_fname"].ToString(),
    		drCurrent["au_lname"].ToString());
    }
    Console.ReadLine();
    					
  11. Projenizi kaydetmek. Hata Ayıkla) menüsünde, çalıştığından emin olun ve projenizin Başlat ' ı tıklatın.

Kod dökümü tamamlayın.

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();
		}
	}
}
				

Referanslar

ADO.NET hakkında daha fazla bilgi için aşağıdaki Microsoft Web sitelerini, DataSet nesneleri ve SQL, başvurun:
"Veri Access'e diving" (MSDN Sesler sütun Dino Esposito göre)
http://msdn2.microsoft.com/en-us/library/ms810293.aspx (http://msdn2.microsoft.com/en-us/library/ms810293.aspx)

ADO programcısı için ADO.NET
http://msdn2.microsoft.com/en-us/library/ms973217.aspx (http://msdn2.microsoft.com/en-us/library/ms973217.aspx)

MSDN Online .NET Geliştirici Merkezi
http://msdn.microsoft.com/en-us/netframework/default.aspx (http://msdn.microsoft.com/en-us/netframework/default.aspx)

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ADO.NET 1.0
  • Microsoft ADO.NET 1.1
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Anahtar Kelimeler: 
kbmt kbhowtomaster kbsqlclient kbsystemdata KB314145 KbMttr
Otomatik TercümeOtomatik Tercüme
Ö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:314145  (http://support.microsoft.com/kb/314145/en-us/ )