OleDbDataReader oleDbDataReader = oleDbCommand.ExecuteReader(CommandBehavior.KeyInfo);
DataTable dataTable = oleDbDataReader.GetSchemaTable();
How does GetSchemaTable() work?
Where does it get its information in RDBMS?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
The implementation of
IDataReader.GetSchemaTable()is up to the provider – so it will vary. You can write your own providers and do it any way you want.To be honest this is bad bit of design in the framework – you should never have interface methods that return an untyped
DataTableorDataSetas that result could contain anything. Kinda defeats the point of constraining it by an interface in the first place: “you must have a method that returnsDataTablebut we don’t care what rows or columns it has”Even if the provider is SQL
GetSchemaTable()doesn’t go back to the[syscolumns]or[sysobjects]. That would be an additional DB call, require additional privileges and not work anyway, as the result set doesn’t need to reflect any objects in the DB.I’m not certain, but I’d expect the vast majority of
IDataReader.GetSchemaTable()implementations to read some properties of the meta data held with the result set.