检查DataReader中是否存在列,或者在某些异常中不使调试器中断

时间:2008-12-31 15:32:14

标签: .net visual-studio datareader

我的代码如下:

  //System.Data.IDataRecord dr
  try
  {
       Consolidated = Utility.NullConvert.ToBool(dr[Constants.Data.Columns.cConsolidated], false);
  }
  catch (IndexOutOfRangeException) { } //swallow

我不知道合并列是否会出现在datareader中,所以我这样做是为了检查。它工作正常(虽然有点hackish。)

当我附加一个调试器时,它会在它抛出异常时中断。非常讨厌。

有没有更好的方法来编写该代码;或者是否有一些Visual Studio方式告诉它忽略异常而不是中断(但只是在这里;不是在任何地方)。

3 个答案:

答案 0 :(得分:2)

是的,您可以使用datareader的GetSchemaTable()方法获取列列表,然后您可以查看该列是否存在。

您可能会发现this very similar question有帮助。

答案 1 :(得分:2)

我只是在循环开始时使用GetOrdinal()来首先找到列索引(并存储在变量中)。然后检查它是否为>=0。这样做的好处是也可以提高性能(只要你将这个整数用于所有访问,而不是名称)。

不,没有优雅的方法可以忽略特定的异常。你可以捕捉和吞咽,但这不是一个好方法。

答案 2 :(得分:-1)

您只需使用以下代码:

reader.GetSchemaTable().Columns.Contains("Your_Column")

这将返回一个布尔值。

If reader.GetSchemaTable().Columns.Contains("ContactID") Then
   ' Do something
End If