A more database-agnostic way to get information about the columns of a table in .NET is to use the
GetSchemaTable method of an
IDataReader. Simply perform
ExecuteReader on an SQL statement like
SELECT * FROM source WHERE 0=1
(being sure to protect against SQL injection of course)
and iterate the Rows in the resultant
0=1 ensures that we don't waste bandwidth transferring data needlessly. You can (and should) Close the
IDataReader as soon as you have the
I have found that each ADO.NET provider uses a slightly different order of the columns and some have more columns than others, but the only ones I'm interested in are:
ProviderType needs to be parsed into an appropriate enumeration (e.g.
System.Data.SqlDbType when using SQL Server) to get a meaningful value.
An additional benefit of this technique is that you can list out the columns of a view or ad hoc SQL as well, not just tables.
BSCS 1992 Wentworth Institute of Technology
Originally from the Boston (MA) area. Lived in SoCal for a while. Now in the Phoenix (AZ) area.
OpenVMS enthusiast, ISO 8601 evangelist, photographer, opinionated SOB
"If you need help knowing what to think, let me know and I'll tell you." -- Jeffrey Snover [MSFT]
"Typing is no substitute for thinking." -- R.W. Hamming
"I find it appalling that you can become a programmer with less training than it takes to become a plumber." -- Bjarne Stroustrup
ZagNut’s Law: Arrogance is inversely proportional to ability.
"Well blow me sideways with a plastic marionette. I've just learned something new - and if I could award you a 100 for that post I would. Way to go you keyboard lovegod you." -- Pete O'Hanlon
"linq'ish" sounds like "inept" in German -- Andreas Gieriet
"Things would be different if I ran the zoo." -- Dr. Seuss
"Wrong is evil, and it must be defeated." – Jeff Ello
"A good designer must rely on experience, on precise, logical thinking, and on pedantic exactness." -- Nigel Shaw
“It’s always easier to do it the hard way.” -- Blackhart
“If Unix wasn’t so bad that you can’t give it away, Bill Gates would never have succeeded in selling Windows.” -- Blackhart
"Omit needless local variables." -- Strunk... had he taught programming
"We learn more from our mistakes than we do from getting it right the first time."
My first rule of debugging: "If you get a different error message, you're making progress."
My golden rule of database management: "Do not unto others' databases as you would not have done unto yours."
My general rule of software development: "Design should be top-down, but implementation should be bottom-up."