Chyba: GetSchemaTable metódu SqlDataReader objektu vráti názov zle stĺpca

Preklady článku Preklady článku
ID článku: 307512 - Zobraziť produkty, ktorých sa tento článok týka.
Tento článok bol archivovaný. Je publikovaný v aktuálnej podobe a už nebude aktualizovaný.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

PRIZNAKY

The GetSchemaTable metóda SqlDataReader objekt Vráti stĺpce, BaseServerName a BaseCatalogName vlastnosti. Avšak,SqlDataReader.GetSchemaTable mali by sa vrátiť iba BaseCatalogName.

PRICINA

Popri stĺpce, ktoré sú opísané v Microsoft.NET Framework triedy knižnica Software Development Kit (SDK) dokumentácia, SqlDataReader.GetSchemaTable Vráti názov stĺpca BaseServerName. BaseServerName je názov servera Microsoft SQL Server napríklad že SqlDataReader používa. BaseServerName objaví pred BaseCatalogName v DataTable ktorá popisuje stĺpec metaúdaje.

RIESENIE

Pretože tento problém sa nevyskytuje pri OleDbDataReader objekt, môžete použiť OleDbDataReader na získanie SchemaTable informácie.

STAV

Spoločnosť Microsoft potvrdila, že ide o chybu v programe Microsoft výrobky, ktoré sú uvedené na začiatku tohto článku.

DALSIE INFORMACIE

Kroky na reprodukovanie správanie

Pomocou jazyka Visual Basic.NET

  1. Otvorte program Microsoft Visual Studio.NET a vytvoriť nové Visual Základná aplikácia konzoly projekt.
  2. Pridajte nasledujúci kód vyššie modul Module1:
    Imports System.Data.SqlClient
    					
  3. Sub Main() postupu, pridajte nasledujúci kód:
    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. Pozmeniť reťazec pripojenia ako vhodné pre vaše Microsoft SQL Server.
  5. Stlačte kláves F5 zostavenie a spustenie projektu. Oznámenie že všetky stĺpce SchemaTable zobrazí v okne konzoly. Okrem toho oznámenie, že BaseServerName tiež sa objavuje pred BaseCatalogName.

Pomocou Visual C#.NET

  1. Spustiť Visual Studio.NET a vytvoriť nové Visual C#.NET Konzoly aplikácie projektu.
  2. Pridať nasledujúci kód do Class1 pred ConsoleApplication1 priestor názvov:
    using System.Data;
    using System.Data.SqlClient;
    					
  3. Pridať nasledujúci kód do static void Main (string] args) postup:
    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. Pozmeniť reťazec pripojenia ako vhodné pre váš SQL Serverový počítač.
  5. Stlačte kláves F5 zostavenie a spustenie projektu. Oznámenie že všetky stĺpce SchemaTable zobrazí v okne konzoly. Okrem toho oznámenie, že BaseServerName tiež sa objavuje pred BaseCatalogName.

Pomocou Visual C++.NET

  1. Spustiť Visual Studio.NET a vytvoriť Visual C++.NET Spravovaných aplikácií project.
  2. Pridať nasledujúci kód pred int _tmain(void) postup:
    #using <System.dll>
    #using <System.Data.dll>
    
    using namespace System;
    using namespace System::Data;
    using namespace System::Data::SqlClient ;
    					
  3. Pridajte nasledujúci kód int-tmain(void) postupu:
    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. Pozmeniť reťazec pripojenia ako vhodné pre váš SQL Serverový počítač.
  5. Stlačte kláves F5 zostavenie a spustenie projektu. Oznámenie že všetky stĺpce SchemaTable zobrazí v okne konzoly. Okrem toho oznámenie, že BaseServerName tiež sa objavuje pred BaseCatalogName.

Pomocou Visual J#.NET

  1. Otvorte program Microsoft Visual Studio.NET a vytvoriť nové Visual J# konzola aplikácie projektu.
  2. Do class1 pridajte nasledujúci kód:
    import System.Data.*;
    import System.Data.SqlClient.*;
    					
  3. Pridať nasledujúci kód do hlavnej:
    	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. Pozmeniť reťazec pripojenia ako vhodné pre váš SQL Serverový počítač.
  5. Stlačte kláves F5 zostavenie a spustenie projektu. Oznámenie že všetky stĺpce SchemaTable zobrazí v okne konzoly. Okrem toho oznámenie, že BaseServerName tiež sa objavuje pred BaseCatalogName.

Vlastnosti

ID článku: 307512 - Posledná kontrola: 24. februára 2014 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • 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
Kľúčové slová: 
kbnosurvey kbarchive kbtshoot kbvs2002sp1sweep kbbug kbpending kbreadme kbsqlclient kbsystemdata kbmt KB307512 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:307512

Odošlite odozvu

 

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