Come recuperare lo Schema di colonne utilizzando il metodo GetSchemaTable di DataReader e Visual c#.NET

Questo articolo è stato precedentemente pubblicato con il codice di riferimento I310107
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 310107
Per Visual Basic un Microsoft.NET versione di questo l'articolo, vedere 310108.
Per un esempio di Microsoft Visual C++ .NET versione di questo articolo, vedere 309683.

In questo articolo si riferisce per la seguente documentazione Microsoft.NET Framework Class Library dello spazio dei nomi:
  • System.Data.OleDb

IN QUESTA ATTIVITÀ

Sommario
In questo articolo viene illustrato come utilizzare il metodo GetSchemaTable dell'oggetto DataReader di ADO.NET per recuperare le informazioni sullo schema di colonna. Un altro nome dello schema della colonna è la proprietà del campo. Informazioni sullo schema di colonna include le seguenti informazioni relative alla colonna:
  • Nome
  • Tipo di dati
  • Dimensioni
  • Se la colonna è un campo chiave primaria
  • Se la colonna è un contatore (AutoIncrement) campo
Il metodo GetSchemaTable restituisce una proprietà DataTable contenente lo schema di colonne per un oggetto DataReader. DataTable contiene una riga per ogni campo del resultset. Ogni colonna esegue il mapping a una proprietà del campo del ResultSet. La proprietà ColumnName della colonna DataTable è il nome della proprietà del campo, ad esempio la proprietà ColumnName, il tipo di dati, ColumnSize, IsKeyColumno IsAutoIncrement . Il valore della colonna DataTable è il valore della proprietà del campo, ad esempio il valore del campo nome della proprietà ColumnName .
Nota Per ottenere informazioni di chiave primaria, ad esempio se è un campo parte di una chiave primaria e se si tratta di un campo AutoIncrement , è necessario impostare il valore di CommandBehavior di DataReader per CommandBehavior.

È possibile utilizzare il metodo GetSchemaTable con sia il provider OLE DB.NET Provider o il SQL.NET Provider. Il metodo OleDbDataReader. GetSchemaTable esegue il mapping al metodo OLE DB IColumnsRowset:: GetColumnsRowset . Il metodo SqlDataReader. GetSchemaTable non utilizza un livello Provider OLE DB.

Della nota, a meno che non si utilizza in modo esplicito il metodo GetSchemaTable , DataReader non viene restituito lo schema di colonne. Inoltre, se si utilizza GetSchemaTable per recuperare lo schema di colonne, è possibile aggiornare il DataReader. DataReader recupera sempre un flusso di sola lettura, forward-only dei dati da un database.

back to the top

Quando utilizzare il metodo GetSchemaTable

  • L'oggetto SqlConnection non supporta il recupero delle informazioni dello schema SQL Server in un metodo analogo al metodo GetOleDbSchemaTable dell'oggetto OleDbConnection . Il metodo GetSchemaTable della classe SqlDataReader fornisce un modo semplice per ottenere lo schema di colonne informazioni da SQL Server.
  • Sebbene il metodo GetOleDbSchemaTable dell'oggetto OleDbConnection può restituire informazioni sullo schema di colonna, database e tabella è probabile che il metodo GetSchemaTable dell'oggetto DataReader è semplice da utilizzare se si desidera recuperare solo colonna informazioni sullo schema.
  • È possibile utilizzare il metodo GetSchemaTable per creare un nuovo oggetto DataTable basata sullo schema di una proprietà DataTable esistente è possibile personalizzare i nomi di colonna e altro attributi delle colonne. Per codice di esempio viene illustrato come utilizzare GetSchemaTable per definire una nuova tabella, consultare il "Visual Studio Samples: Fitch and Mather 7.0 Esegui SQL Query"argomento in Microsoft Visual Studio.NET in linea Guida in linea.
back to the top

Consente di recuperare lo Schema di colonne con il provider OLE DB.NET Provider

In questo esempio vengono elencate le informazioni sullo schema per le colonne (campo proprietà) della tabella Employees in Northwind SQL Server database.

Si noti che quando si utilizza il provider OLE DB.NET, utilizza il metodo GetSchemaTable dell'oggetto OleDbDataReader .
  1. Avviare Visual Studio.NET e creare un nuovo progetto Visual c# Progetto di applicazione console. Per impostazione predefinita viene creato Class1. cs.
  2. Aprire la finestra del codice per Class1. Incollare il codice riportato di seguito nella parte superiore della finestra del codice sopra la dichiarazione dello spazio dei nomi :
    using System.Data;using System.Data.OleDb;					
  3. Nella finestra del codice incollare il codice riportato di seguito nella funzione Main :
    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. Modificare i parametri della proprietà ConnectionString per connettersi correttamente al SQL Server computer.
  5. Premere il tasto F5 per compilare ed eseguire il progetto. Avviso le proprietà di ciascun campo vengono elencate nella finestra della Console.
  6. Premere INVIO per scorrere l'elenco, terminare la console applicazione e tornare nell'ambiente di sviluppo integrato (IDE).
back to the top

Consente di recuperare lo Schema di colonne con il SQL.NET Provider

In questo esempio vengono elencate le informazioni sullo schema per le colonne (campo proprietà) della tabella Employees in Northwind SQL Server database.

Si noti che quando si utilizza il SQL.NET, si utilizza il metodo GetSchemaTable dell'oggetto SqlDataReader .
  1. Avviare Visual Studio.NET e creare un nuovo progetto Visual c# Progetto di applicazione console. Per impostazione predefinita viene creato Class1. cs.
  2. Aprire la finestra del codice per Class1. Incollare il codice riportato di seguito nella parte superiore della finestra del codice sopra la dichiarazione dello spazio dei nomi :
    using System.Data;using System.Data.SqlClient;					
  3. Nella finestra del codice incollare il codice riportato di seguito nella funzione Main :
    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. Modificare i parametri della proprietà ConnectionString per connettersi correttamente al SQL Server computer.
  5. Premere F5 per compilare ed eseguire il progetto. Si noti che il proprietà di tutti i campi sono elencate nella finestra della Console.
  6. Premere INVIO per scorrere l'elenco, terminare la console applicazione e tornare all'IDE.
back to the top
Riferimenti
Per ulteriori informazioni sull' oggetto DataReader e il metodo GetSchemaTable , vedere i seguenti argomenti in Visual Studio.NET in linea Guida in linea:
Recupero di dati mediante DataReader

Metodo IDataReader. GetSchemaTable

Nota: questo argomento include un elenco completo delle colonne del restituito oggetto DataTable.

Metodo OleDbDataReader. GetSchemaTable

Metodo SqlDataReader. GetSchemaTable
Per ulteriori informazioni sull'utilizzo del metodo GetOleDbSchemaTable dell'oggetto OleDbConnection per recuperare le informazioni sullo schema, fare clic sul numero dell'articolo Per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:
309681 Come recuperare le informazioni sullo Schema tramite GetOleDbSchemaTable e Visual c#.NET
back to the top

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 310107 - Ultima revisione: 06/12/2012 06:13:00 - Revisione: 1.0

Microsoft ADO.NET 1.1, Microsoft Visual C# .NET 2003 Standard Edition, Microsoft Visual C# .NET 2002 Standard Edition

  • kbdatabase kbhowtomaster kbsqlclient kbsystemdata kbmt KB310107 KbMtit
Feedback