Recupero di informazioni sullo schema da un database

È possibile ottenere informazioni sullo schema dall'origine dati utilizzando uno dei provider di dati .NET Framework. Le informazioni sullo schema in un origine dati includono i database o i cataloghi disponibili dall'origine dati, le tabelle e le viste in un database, i vincoli esistenti per le tabelle nell'origine dati e così via.

Con il provider di dati .NET Framework per SQL Server e il provider di dati .NET Framework per ODBC le informazioni sullo schema vengono esposte tramite funzionalità fornite dalla specifica origine dati, quali le stored procedure e le visualizzazioni informative. Per informazioni sulle visualizzazioni e le stored procedure disponibili tramite Microsoft SQL Server, vedere il riferimento Transact-SQL presente in MSDN library all'indirizzo http://msdn.microsoft.com/library (informazioni in lingua inglese).

Con il provider di dati .NET Framework per OLE DB le informazioni sullo schema vengono esposte utilizzando il metodo GetOleDbSchemaTable dell'oggetto OleDbConnection. GetOleDbSchemaTable accetta come argomenti un OleDbSchemaGuid che identifica le informazioni sullo schema da restituire e una matrice di restrizioni sulle colonne restituite. GetOleDbSchemaTable restituisce un DataTable compilato con le informazioni sullo schema.

Con il provider di dati .NET Framework per ODBC le informazioni sullo schema vengono recuperate dall'origine dati come avviene per il provider di dati .NET Framework per SQL Server.

Nell'esempio di codice seguente viene restituito l'elenco delle tabelle nel database Northwind. Nell'esempio del provider di dati .NET Framework per SQL Server vengono selezionate le tabelle di una visualizzazione informativa fornita da Microsoft SQL Server e viene compilato un DataTable utilizzando un DataAdapter. Nell'esempio del provider di dati .NET Framework per OLE DB viene utilizzato GetOleDbSchemaTable per restituire un DataTable con le informazioni sullo schema.

SqlClient

Dim nwindConn As SqlConnection = New SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind")

Dim schemaDA As SqlDataAdapter = New SqlDataAdapter("SELECT * FROM INFORMATION_SCHEMA.TABLES " & _
                                                    "WHERE TABLE_TYPE = 'BASE TABLE' " & _
                                                    "ORDER BY TABLE_TYPE", _
                                                    nwindConn)

Dim schemaTable As DataTable = New DataTable
schemaDA.Fill(schemaTable)
[C#]
SqlConnection nwindConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind");

SqlDataAdapter schemaDA = new SqlDataAdapter("SELECT * FROM INFORMATION_SCHEMA.TABLES " +
                                             "WHERE TABLE_TYPE = 'BASE TABLE' " +
                                             "ORDER BY TABLE_TYPE", 
                                             nwindConn);

DataTable schemaTable = new DataTable();
schemaDA.Fill(schemaTable);

OleDb

Dim nwindConn As OleDbConnection = New OleDbConnection("Provider=SQLOLEDB;Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind")

nwindConn.Open()
Dim schemaTable As DataTable = nwindConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, _
                                                             New Object() {Nothing, Nothing, Nothing, "TABLE"})
nwindConn.Close()
[C#]
OleDbConnection nwindConn = new OleDbConnection("Provider=SQLOLEDB;Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind");

nwindConn.Open();
DataTable schemaTable = nwindConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
                                                      new object[] {null, null, null, "TABLE"});
nwindConn.Close();

Vedere anche

Utilizzo di provider di dati .NET Framework per accedere ai dati | Classe DataTable | Metodo OleDbConnection.GetOleDbSchemaTable | Classe OleDbSchemaGuid