Domanda

OleDbDataReader oleDbDataReader = oleDbCommand.ExecuteReader(CommandBehavior.KeyInfo);
DataTable dataTable = oleDbDataReader.GetSchemaTable();

Come funziona GetSchemaTable() lavoro?

Dove si ottiene le sue informazioni in RDBMS?

È stato utile?

Soluzione

L'attuazione di IDataReader.GetSchemaTable() è fino al provider - in modo che varierà. È possibile scrivere il proprio provider e farlo in qualsiasi modo si desidera.

Per essere onesti questo è male po 'di progettazione nel quadro - non si dovrebbe mai avere metodi di interfaccia che restituiscono un DataTable non tipizzata o DataSet come quel risultato potrebbe contenere qualsiasi cosa. sconfigge Kinda il punto di condizionare esso da un'interfaccia, in primo luogo: "Devi avere un metodo che restituisce DataTable ma non ci interessa cosa righe o colonne ha"

Anche se il provider è SQL GetSchemaTable() non tornare alla [syscolumns] o [sysobjects]. Sarebbe una chiamata DB aggiuntivo, richiede ulteriori privilegi e non funzionerà in ogni caso, come il set di risultati non ha bisogno di riflettere eventuali oggetti nel DB.

Io non sono certo, ma mi aspetto la stragrande maggioranza delle implementazioni IDataReader.GetSchemaTable() leggere alcune proprietà dei metadati avuti con il set di risultati.

Altri suggerimenti

GetSchemaTable () legge i metadati sul gruppo di risultati restituito da ADO.NET.

Dalle tabelle di sistema (ad esempio, syscolumns, sysobjects, ecc) in ogni database.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top