Überprüfen Sie die Existenz der Spalte in Datareader oder nicht Debugger Pause auf bestimmte Ausnahmen machen

StackOverflow https://stackoverflow.com/questions/403215

  •  03-07-2019
  •  | 
  •  

Frage

Ich habe Code, der wie folgt aussieht:

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

Ich weiß nicht, ob die konsolidierte Spalte in dem Datareader vorhanden sein wird, so dass ich das tun zu überprüfen. Es funktioniert gut (ein wenig hackish ist, obwohl).

Wenn ich einen Debugger obwohl anhängen, bricht es, dass auf, wann immer es die Ausnahme jedoch wirft. Extrem ärgerlich.

Gibt es einen besseren Weg, diesen Code zu schreiben; oder gibt es ein Visual Studio, wie es zu sagen, die Ausnahme und nicht brechen (aber nur hier, nicht überall) zu ignorieren.

War es hilfreich?

Lösung

Ja, können Sie das GetSchemaTable () -Methode des Datareader verwenden, um eine Liste der Spalten zu bekommen, dann können Sie sehen, ob die Spalt vorhanden ist.

Sie können feststellen, diese sehr ähnliche Frage hilfreich.

Andere Tipps

Ich würde einfach GetOrdinal() zu Beginn der Schleife verwenden, um die Spaltenindizes zunächst (in einer Variablen und Speicher) zu finden. Dann einfach prüfen, ob es >=0 ist. Dies hat den Vorteil, dass die Verbesserung der Leistung zu (solange man dann für jeden Zugriff diese ganze Zahl verwenden, nicht der Name).

Und nein, es gibt keine elegante Art und Weise eine besondere Ausnahme zu ignorieren. Sie könnten fangen und schlucken, aber das ist kein guter Ansatz.

Sie können einfach den folgenden Code:

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

Dies wird einen boolean zurück.

If reader.GetSchemaTable().Columns.Contains("ContactID") Then
   ' Do something
End If
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top