Check for existence of column in DataReader OR not make debugger break on certain exceptions
Solution 1
Yes, you can use the GetSchemaTable() method of the datareader to get a list of columns, then you can see if that column exists.
You might find this very similar question helpful.
Solution 2
I would simply use GetOrdinal()
at the start of the loop to find the column indexes first (and store in a variable). Then just check whether it is >=0
. This has the advantage of improving performance too (as long as you then use this integer for all access, not the name).
And no, there is no elegant way of ignoring a particular exception. You could catch and swallow, but that is not a good approach.
Adam
Updated on June 05, 2022Comments
-
Adam about 2 years
I have code that looks like:
//System.Data.IDataRecord dr try { Consolidated = Utility.NullConvert.ToBool(dr[Constants.Data.Columns.cConsolidated], false); } catch (IndexOutOfRangeException) { } //swallow
I don't know if the consolidated column will be present in the datareader, so I do that to check. It works fine (is a little hackish, though).
When I attach a debugger though, it breaks on that whenever it throws the exception however. Extremely annoying.
Is there a better way to write that code; or is there some Visual Studio way of telling it to ignore the exception and not break (but only right here; not everywhere).
-
Adam over 15 yearsI had to cast the interface; but this worked well. I couldn't use GetOrdinal as this threw the same exception I was trying to avoid.
-
nawfal over 10 yearsI don't think this works.
Columns
here is a different collection, not a collection of fields of result set. -
Chad almost 9 years@nawfal confirmed, this is not a solution.
-
James Roeiter almost 8 yearsSchemaTable is not the table the DataReader refers to , over 8 years has passed but this page still pop up in Google when asking this question.