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

Ö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
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
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.
kbreadme

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 307512 - Son İnceleme: 02/24/2014 12:51:55 - Düzeltme: 1.18

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

  • kbnosurvey kbarchive kbmt kbtshoot kbvs2002sp1sweep kbbug kbpending kbreadme kbsqlclient kbsystemdata KB307512 KbMttr
Geri bildirim