Hata: SqlDataReader nesnesinin GetSchemaTable yöntem yanlış bir sütun adını döndürür.

Makale çevirileri Makale çevirileri
Makale numarası: 307512 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

SqlDataReader nesnesinin GetSchemaTable yöntemi, sütunlar ve BaseServerNameBaseCatalogName özelliklerini döndürür. Ancak, SqlDataReader.GetSchemaTable yalnızca BaseCatalogName döndürmelidir.

Neden

Microsoft .NET Framework sınıf kitaplığı Software Development Kit'e (SDK içinde) tanımlanan sütunların yanında belgelerine SqlDataReader.GetSchemaTableBaseServerName adlı bir sütun döner. BaseServerNameSqlDataReader kullanan bir Microsoft SQL Server örneğinin adıdır. Önce sütun meta verileri tanımlayan DataTable içinde BaseCatalogNameBaseServerName görüntülenir.

Çözüm

Bu sorun, OleDbDataReader nesnesiyle oluşmaz, çünkü, OleDbDataReaderSchemaTable bilgi almak için kullanabilirsiniz.

Durum

Microsoft, Microsoft bir hata olduğunu onaylamıştır bu makalenin başında listelenen ürünlerden.

Daha fazla bilgi

Davranışı Yeniden Oluşturma Adımları

Visual Basic .NET kullanma

  1. Microsoft Visual Studio. NET'i açın ve yeni bir Visual Basic konsol uygulaması) projesi oluşturun.
  2. Yukarıdaki Module Module1 aşağıdaki kodu ekleyin:
    Imports System.Data.SqlClient
    					
  3. Sub Main() yordamına aşağıdaki kodu ekleyin:
    Dim cnNwind As New SqlConnection("Data Source=ServerName;user id=username;" & _
                                     "Password=password;Initial Catalog=Northwind;")
            Dim cmd As New SqlCommand("Select * from Customers", cnNwind)
            cnNwind.open()
    
            Dim dr As SqlDataReader
            dr = cmd.ExecuteReader
            Dim i As Integer
            For i = 0 To dr.GetSchemaTable.Columns.Count - 1
    
            System.Console.WriteLine(dr.GetSchemaTable.Columns(i).ColumnName)
    
            Next
            System.Console.Read()        
            dr.Close()
            cnNwind.Close()
    					
  4. Microsoft SQL Server için uygun bağlantı dizesini değiştirin.
  5. Derlemek ve proje çalıştırmak için F5 tuşuna basın. Tüm sütunları SchemaTable, konsol penceresinde görünür dikkat edin. Buna ek olarak, BaseServerNameBaseCatalogName önce'ı da görüntülendiğine dikkat edin.

Visual C#. NET'i kullanarak

  1. Visual Studio. NET'i başlatın ve bir yeni Visual C# .NET oluşturma Console Application proje.
  2. Aşağıdaki kodu Class1 için önce ConsoleApplication1 ad olarak ekleyin:
    using System.Data;
    using System.Data.SqlClient;
    					
  3. Static void Main (string [] args) yordamına aşağıdaki kodu ekleyin:
    SqlConnection cnNwind = new SqlConnection("Data Source=servername;user id=username;
                                              Password=password;Initial Catalog=Northwind;");
            SqlCommand cmd = new SqlCommand("Select * from Customers", cnNwind);
    	
            cnNwind.Open();
    
            SqlDataReader dr ;
    
    			dr = cmd.ExecuteReader();
    			DataTable dt = dr.GetSchemaTable();
    				for (int i=0;i<dt.Columns.Count;i++)
    				{
    					System.Console.WriteLine(dt.Columns[i]);
    				}
    				System.Console.Read();
    
                                    dr.Close();
                                    cnNwind.Close();
    			
    					
  4. Uygun olarak, SQL bağlantı dizesini değiştirin sunucu bilgisayar.
  5. Derlemek ve proje çalıştırmak için F5 tuşuna basın. Tüm sütunları SchemaTable, konsol penceresinde görünür dikkat edin. Buna ek olarak, BaseServerNameBaseCatalogName önce'ı da görüntülendiğine dikkat edin.

Visual C++ .NET kullanma

  1. Visual Studio. NET'i başlatın ve bir Visual C++ .NET oluşturma yönetilen uygulama proje.
  2. Önce int _tmain(void) yordamı aşağıdaki kodu ekleyin:
    #using <System.dll>
    #using <System.Data.dll>
    
    using namespace System;
    using namespace System::Data;
    using namespace System::Data::SqlClient ;
    					
  3. Int-tmain(void) yordamına aşağıdaki kodu ekleyin:
    SqlConnection *cnNwind = new SqlConnection("Data Source=servername;user id=username;
                                               Password=password;Initial Catalog=Northwind;");
        SqlCommand *cmd = new SqlCommand("Select * from Customers", cnNwind);
    		 cnNwind->Open();
    
            SqlDataReader *dr ;
    		
    			dr = cmd->ExecuteReader();
    			DataTable *dt = dr->GetSchemaTable();
    			int i;
    			for (i=0;i<dt->Columns->Count;i++)
    				{
                                     Console::WriteLine(dt->Columns->Item [i]);
    				}
    				System::Console::Read();
    				dr->Close();
    				cnNwind->Close();
    			
                                    return 0;
    					
  4. Uygun olarak, SQL bağlantı dizesini değiştirin sunucu bilgisayar.
  5. Derlemek ve proje çalıştırmak için F5 tuşuna basın. Tüm sütunları SchemaTable, konsol penceresinde görünür dikkat edin. Buna ek olarak, BaseServerNameBaseCatalogName önce'ı da görüntülendiğine dikkat edin.

Visual J#. NET'i kullanma

  1. Microsoft Visual Studio. NET'i açın ve yeni bir Visual J# konsol uygulaması) projesi oluşturun.
  2. Class1 için aşağıdaki kodu ekleyin:
    import System.Data.*;
    import System.Data.SqlClient.*;
    					
  3. Ana için aşağıdaki kodu ekleyin:
    	SqlConnection cnNwind = new SqlConnection("Data Source=servername;user id=username;Password=password;Initial Catalog=Northwind;");
    		SqlCommand cmd = new SqlCommand("Select * from Customers", cnNwind);
    	
    		cnNwind.Open();
    
    		SqlDataReader dr ;
    
    		dr = cmd.ExecuteReader();
    		DataTable dt = dr.GetSchemaTable();
    		for (int i = 0; i < dt.get_Columns().get_Count(); i++)
    		{
    			DataColumnCollection dcc = dt.get_Columns();
    			System.Console.WriteLine(dcc.get_Item(i));
    		}
    		System.Console.Read();
    	
    		dr.Close();
    		cnNwind.Close();
    					
  4. Uygun olarak, SQL bağlantı dizesini değiştirin sunucu bilgisayar.
  5. Derlemek ve proje çalıştırmak için F5 tuşuna basın. Tüm sütunları SchemaTable, konsol penceresinde görünür dikkat edin. Buna ek olarak, BaseServerNameBaseCatalogName önce'ı da görüntülendiğine dikkat edin.

Özellikler

Makale numarası: 307512 - Last Review: 24 Şubat 2014 Pazartesi - Gözden geçirme: 1.18
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ADO.NET 2.0
  • Microsoft ADO.NET (included with the .NET Framework)
  • Microsoft ADO.NET 1.1
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual C++ .NET 2002 Standard Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual J# .NET 2003 Standard Edition
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 2.0
  • Microsoft Visual Basic 2005
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual J# 2005 Express Edition
Anahtar Kelimeler: 
kbnosurvey kbarchive kbmt kbtshoot kbvs2002sp1sweep kbbug kbpending kbreadme kbsqlclient kbsystemdata KB307512 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:307512

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