BUG: Metode GetSchemaTable objek SqlDataReader mengembalikan nama kolom salah

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 307512 - Melihat produk di mana artikel ini berlaku.
Artikel ini telah diarsipkan. Artikel ditawarkan dalam bentuk "apa adanya" dan tidak akan dapat diperbarui lagi.
Perbesar semua | Perkecil semua

Pada Halaman ini

GEJALA

The GetSchemaTable metode SqlDataReader objek kembali kolom, BaseServerName dan BaseCatalogName properti. Namun,SqlDataReader.GetSchemaTable hanya harus kembali BaseCatalogName.

PENYEBAB

Selain untuk kolom yang dijelaskan di Microsoft.NET Framework kelas perpustakaan Software Development Kit (SDK) dokumentasi, SqlDataReader.GetSchemaTable kembali kolom yang bernama BaseServerName. BaseServerName adalah nama Microsoft SQL Server contoh yang SqlDataReader menggunakan. BaseServerName muncul sebelum BaseCatalogName dalam DataTable yang menggambarkan metadata kolom.

PEMECAHAN MASALAH

Karena masalah ini tidak terjadi dengan OleDbDataReader objek, Anda dapat menggunakan OleDbDataReader untuk mendapatkan SchemaTable informasi.

STATUS

Microsoft telah mengkonfirmasi bahwa ini adalah bug di Microsoft produk yang didaftar pada awal artikel ini.

INFORMASI LEBIH LANJUT

Langkah-Langkah untuk Mereproduksi Perilaku

Menggunakan Visual Basic.NET

  1. Buka Microsoft Visual Studio.NET, dan menciptakan Visual baru Dasar proyek Console Application.
  2. Menambahkan kode berikut di atas modul Module1:
    Imports System.Data.SqlClient
    					
  3. Tambahkan kode berikut untuk prosedur Sub Main():
    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. Memodifikasi rangkaian sambungan yang sesuai untuk Anda Microsoft SQL Server.
  5. Tekan tombol F5 untuk mengkompilasi dan menjalankan proyek. Pemberitahuan itu semua kolom SchemaTable muncul di jendela konsol. Selain itu, perhatikan bahwa BaseServerName juga muncul sebelum BaseCatalogName.

Menggunakan Visual C#.NET

  1. Mulai Visual Studio.NET, dan membuat baru Visual C#.NET Konsol aplikasi proyek.
  2. Tambahkan kode berikut untuk Class1 sebelum ConsoleApplication1 namespace:
    using System.Data;
    using System.Data.SqlClient;
    					
  3. Tambahkan kode berikut untuk static void Main (string] args) prosedur:
    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. Memodifikasi rangkaian sambungan yang sesuai untuk Anda SQL Komputer server.
  5. Tekan tombol F5 untuk mengkompilasi dan menjalankan proyek. Pemberitahuan itu semua kolom SchemaTable muncul di jendela konsol. Selain itu, perhatikan bahwa BaseServerName juga muncul sebelum BaseCatalogName.

Menggunakan Visual C++.NET

  1. Mulai Visual Studio.NET, dan menciptakan Visual C++.NET Dikelola aplikasi proyek.
  2. Tambahkan kode berikut sebelum int _tmain(void) prosedur:
    #using <System.dll>
    #using <System.Data.dll>
    
    using namespace System;
    using namespace System::Data;
    using namespace System::Data::SqlClient ;
    					
  3. Tambahkan kode berikut ke int-tmain(void) prosedur:
    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. Memodifikasi rangkaian sambungan yang sesuai untuk Anda SQL Komputer server.
  5. Tekan tombol F5 untuk mengkompilasi dan menjalankan proyek. Pemberitahuan itu semua kolom SchemaTable muncul di jendela konsol. Selain itu, perhatikan bahwa BaseServerName juga muncul sebelum BaseCatalogName.

Menggunakan Visual J#.NET

  1. Buka Microsoft Visual Studio.NET, dan menciptakan Visual baru J# konsol aplikasi proyek.
  2. Tambahkan kode berikut untuk class1:
    import System.Data.*;
    import System.Data.SqlClient.*;
    					
  3. Tambahkan kode berikut ke utama:
    	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. Memodifikasi rangkaian sambungan yang sesuai untuk Anda SQL Komputer server.
  5. Tekan tombol F5 untuk mengkompilasi dan menjalankan proyek. Pemberitahuan itu semua kolom SchemaTable muncul di jendela konsol. Selain itu, perhatikan bahwa BaseServerName juga muncul sebelum BaseCatalogName.

Properti

ID Artikel: 307512 - Kajian Terakhir: 24 Februari 2014 - Revisi: 2.0
Berlaku bagi:
  • Microsoft ADO.NET 2.0
  • 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
Kata kunci: 
kbnosurvey kbarchive kbtshoot kbvs2002sp1sweep kbbug kbpending kbreadme kbsqlclient kbsystemdata kbmt KB307512 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:307512

Berikan Masukan

 

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