Makale numarası: 310107 - Son Gözden Geçirme: 01 Temmuz 2004 Perşembe - Gözden geçirme: 2.3

Nasıl yapılır: sütun Schema DataReader GetSchemaTable yöntemi ve Visual C# .NET kullanarak Al

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

Bu makalede, DataReader nesnesinin GetSchemaTable yöntemi ADO.NET sütun şema bilgilerini almak için nasıl kullanılacağı gösterilmektedir. Başka bir sütunun şema alan özelliklerini adıdır. Şema bilgileri sütun sütun hakkında aşağıdaki bilgileri içerir:
  • Ad
  • Veri Türü
  • Boyut
  • Sütunu birincil anahtar alan olup
  • Sütun, bir otomatik numara (Autoıncrement) alan olup
GetSchemaTable yöntemi için bir DataReader sütun şema içeren bir DataTable özelliğini döndürür. DataTable, resultset her alan için bir satır içerir. Her sütunun bir özellik resultset alanının eşleştirir. DataTable sütunu <a1>ColumnName</a1> özelliğini ColumnName, FieldSizeColumnSizeIsKeyColumn veya IsAutoIncrement özelliği gibi alanın özelliğini adıdır. Ad değeri ColumnName</a0> özelliği gibi alan özelliğinin değeri, DataTable sütun değerdir.
Not Bir alanı birincil anahtar ve bir Autoıncrement alanı olup bir parçası olup olmadığını da dahil olmak üzere birincil anahtar bilgilerini almak için CommandBehavior.KeyInfo için DataReaderCommandBehavior değerini ayarlamanız gerekir.

OLE DB .NET sağlayıcı veya SQL .NET GetSchemaTable yöntemi kullanabileceğiniz sağlayıcısı. OleDbDataReader.GetSchemaTable yöntemi için OLE DB IColumnsRowset::GetColumnsRowset yöntemi eşleştirir. SqlDataReader.GetSchemaTable yöntemi, bir OLE DB Provider katmanı kullanmaz.

Açıkça GetSchemaTable yöntemini kullandığınız sürece, Not sütun şema DataReader döndürmez. Ayrıca, sütun şema almak için GetSchemaTable kullanırsanız, DataReader güncelleştiremiyor. DataReader, her zaman salt okunur, salt ileri veri akışı veritabanından alır.

Ne zaman GetSchemaTable yöntemi kullanın

  • SqlConnection nesnesini OleDbConnection nesnenin GetOleDbSchemaTable yöntemine benzer yönteminde, SQL Server şema bilgileri alınıyor desteklemiyor. SqlDataReader sınıfının GetSchemaTable yöntemi, SQL Server'dan sütun şema bilgilerini almak için kolay bir yol sağlar.
  • OleDbConnection nesnesinin GetOleDbSchemaTable yöntemi, veritabanı, tablo ve sütun şema bilgileri döndürebilirsiniz olsa da, DataReader nesnesinin GetSchemaTable yöntemi yalnızca sütun şema bilgilerini almak istiyorsanız, kullanmak daha kolay olduğunu fark edebilirsiniz.
  • GetSchemaTable yöntemi, sütun adları ve diğer sütun öznitelikleri'ı özelleştirme sırasında varolan bir DataTable özelliğin şemada temel alan yeni bir DataTable ' ı oluşturmak için kullanabilirsiniz. GetSchemaTable yeni bir tablo tanımlamak için nasıl kullanılacağını gösteren örnek kod için Microsoft Visual Studio .NET Online yardım belgelerindeki "Visual Studio örnekleri: Fitch ve Mather 7.0 SQL sorgusunu çalıştır" konusuna bakın.

OLE DB .NET sağlayıcı ile sütun şema alma

Bu örnek, Northwind SQL Server Çalışanlar tablosunda sütun (alan özellikleri) şema bilgileri listeler veritabanı.

Not OLE DB .NET Provider'ı kullandığınızda, OleDbDataReader nesnesinin GetSchemaTable yöntemini kullanın.
  1. Visual Studio. NET'i başlatın ve sonra da yeni bir Visual C# konsol uygulaması) projesi oluşturun. Class1.cs, varsayılan olarak oluşturulur.
  2. Kod penceresi için Class1 açın. Üstündeki ad alanı bildirimi Yukarıdaki kod penceresine aşağıdaki kodu yapıştırın:
    using System.Data;
    using System.Data.OleDb;
    					
  3. Kod penceresinde ana işlevi aşağıdaki kodu yapıştırın:
    OleDbConnection cn = new OleDbConnection();
    OleDbCommand cmd = new OleDbCommand();
    DataTable schemaTable; 
    OleDbDataReader myReader; 
    			 
    //Open a connection to the SQL Server Northwind database.
    cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=login;
                           Password=password;Initial Catalog=Northwind";
    cn.Open();
    
    //Retrieve records from the Employees table into a DataReader.
    cmd.Connection = cn;
    cmd.CommandText = "SELECT * FROM Employees";
    myReader = cmd.ExecuteReader(CommandBehavior.KeyInfo); 
    
    //Retrieve column schema into a DataTable.
    schemaTable = myReader.GetSchemaTable();
    
    //For each field in the table...
    foreach (DataRow myField in schemaTable.Rows){
        //For each property of the field...
        foreach (DataColumn myProperty in schemaTable.Columns) {
    	//Display the field name and value.
    	Console.WriteLine(myProperty.ColumnName + " = " + myField[myProperty].ToString());
        }
        Console.WriteLine();
    
        //Pause.
        Console.ReadLine();
    }
    
    //Always close the DataReader and connection.
    myReader.Close();
    cn.Close();
    					
  4. ConnectionString özelliği, SQL sunucunuz düzgün olarak bağlanmak için parametreleri değiştirmek bilgisayar.
  5. Derlemeye ve proje çalıştırmak için F5 tuşuna basın. Her alanın özelliklerini, konsol penceresinde listelenen dikkat edin.
  6. Liste üzerinde gezinin, konsol uygulaması sona erdirmek ve tümleşik geliştirme ortamı (IDE) için geri dönmek için ENTER'E basın.

SQL .NET sağlayıcı ile sütun şema alma

Bu örnek, Northwind SQL Server Çalışanlar tablosunda sütun (alan özellikleri) şema bilgileri listeler veritabanı.

SQL .NET sağlayıcı kullanırken, SqlDataReader nesnesinin GetSchemaTable yöntemi kullandığını unutmayın.
  1. Visual Studio. NET'i başlatın ve yeni bir Visual C# konsol uygulaması) projesi oluşturun. Class1.cs, varsayılan olarak oluşturulur.
  2. Kod penceresi için Class1 açın. Üstündeki ad alanı bildirimi Yukarıdaki kod penceresine aşağıdaki kodu yapıştırın:
    using System.Data;
    using System.Data.SqlClient;
    					
  3. Kod penceresinde ana işlevi aşağıdaki kodu yapıştırın:
    SqlConnection cn = new SqlConnection();
    SqlCommand cmd = new SqlCommand();
    DataTable schemaTable; 
    SqlDataReader myReader; 
    			 
    //Open a connection to the SQL Server Northwind database.
    cn.ConnectionString = "Data Source=server;User ID=login;
                           Password=password;Initial Catalog=Northwind";
    cn.Open();
    
    //Retrieve records from the Employees table into a DataReader.
    cmd.Connection = cn;
    cmd.CommandText = "SELECT * FROM Employees";
    myReader = cmd.ExecuteReader(CommandBehavior.KeyInfo);
    
    //Retrieve column schema into a DataTable.
    schemaTable = myReader.GetSchemaTable();
    
    //For each field in the table...
    foreach (DataRow myField in schemaTable.Rows){
        //For each property of the field...
        foreach (DataColumn myProperty in schemaTable.Columns) {
    	//Display the field name and value.
    	Console.WriteLine(myProperty.ColumnName + " = " + myField[myProperty].ToString());
        }
        Console.WriteLine();
    
        //Pause.
        Console.ReadLine();
    }
    
    //Always close the DataReader and connection.
    myReader.Close();
    cn.Close();
    					
  4. ConnectionString özelliği, SQL sunucunuz düzgün olarak bağlanmak için parametreleri değiştirmek bilgisayar.
  5. Derlemeye ve proje çalıştırmak için F5 tuşuna basın. Her alanın özelliklerini, konsol penceresinde listelenen dikkat edin.
  6. Listede gezinmek, konsol uygulaması sona erdirmek ve ıDE'YE dönmek için ENTER tuşuna basın.

Referanslar

DataReader ve GetSchemaTable yöntemi hakkında daha fazla bilgi için Yardım belgelerini Visual Studio .NET çevrimiçi'nda aşağıdaki konulara bakın:
DataReader kullanarak verileri alınıyor
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpcontheadonetdatareader.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpcontheadonetdatareader.asp)

IDataReader.GetSchemaTable yöntemi
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataIDataReaderClassGetSchemaTableTopic.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataIDataReaderClassGetSchemaTableTopic.asp)

Not: Bu konu döndürülen DataTable sütunları tam bir listesini içerir.

OleDbDataReader.GetSchemaTable yöntemi
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataOleDbOleDbDataReaderClassGetSchemaTableTopic.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataOleDbOleDbDataReaderClassGetSchemaTableTopic.asp)

SqlDataReader.GetSchemaTable yöntemi
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataSqlClientSqlDataReaderClassGetSchemaTableTopic.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataSqlClientSqlDataReaderClassGetSchemaTableTopic.asp)
Şema bilgileri almak için OleDbConnection nesnesinin GetOleDbSchemaTable yöntemini kullanma hakkında ek bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
309681  (http://support.microsoft.com/kb/309681/EN-US/ ) Nasıl yapılır: GetOleDbSchemaTable ve Visual C# .NET kullanarak şema bilgilerini al

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ADO.NET 1.1
  • Microsoft ADO.NET 1.0
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Anahtar Kelimeler: 
kbmt kbdatabase kbhowtomaster kbsqlclient kbsystemdata KB310107 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:310107  (http://support.microsoft.com/kb/310107/en-us/ )