Frage

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

Wie funktioniert GetSchemaTable() Arbeit?

Wo kommt sie erhalten ihre Informationen in RDBMS?

War es hilfreich?

Lösung

Die Umsetzung der IDataReader.GetSchemaTable() ist zum Provider auf - so es variiert. Sie können Ihre eigenen Provider und tun es, wie Sie wollen schreiben.

Um ehrlich zu sein ist das schlecht wenig Design im Rahmen - Sie sollten nie Interface-Methoden, die eine nicht typisiert DataTable oder DataSet als dieses Ergebnis zurückgeben alles enthalten könnte. Kinda den Punkt besiegt sie durch eine Schnittstelle in erster Linie von Zwang: „Sie müssen eine Methode haben, dass die Renditen DataTable aber wir kümmern uns nicht, was Zeilen oder Spalten hat“

Auch wenn der Anbieter SQL GetSchemaTable() ist zum [syscolumns] oder [sysobjects] geht nicht zurück. Das wäre ein zusätzlicher DB-Aufruf, erfordern zusätzliche Privilegien und funktionieren sowieso nicht, da die Ergebnismenge keine Objekte in der DB widerspiegelt müssen.

Ich bin nicht sicher, aber ich würde die große Mehrheit der IDataReader.GetSchemaTable() Implementierungen erwartet einige Eigenschaften der Metadaten mit der Ergebnismenge gehalten zu lesen.

Andere Tipps

GetSchemaTable () liest die Metadaten auf der Ergebnismenge zurückgegeben von ADO.NET.

Von den Systemtabellen (zum Beispiel syscolumns, sysobjects, usw.) in jeder Datenbank.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top