From 73f95de4c84705e3a51903d35b75450d0e7fc5b5 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Mon, 24 Jul 2023 10:41:36 +0200 Subject: [PATCH] Base: handle non-existing column in NotNull --- Base/DatabaseEx.vb | 11 ++++++----- Base/ModuleExtensions.vb | 24 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/Base/DatabaseEx.vb b/Base/DatabaseEx.vb index 16d6a711..24430345 100644 --- a/Base/DatabaseEx.vb +++ b/Base/DatabaseEx.vb @@ -1,16 +1,17 @@ Public Class DatabaseEx ''' + ''' TODO: Deprecate ''' Checks a Row value for three different `null` values, ''' Nothing, Empty String, DBNull ''' ''' Returns the original value if the value is not null, or `defaultValue` ''' ''' The type of the value - ''' The DataRow that contains the value - ''' The column name - ''' The default value + ''' The DataRow that contains the value + ''' The column name + ''' The default value ''' The original value or the default value - Public Shared Function NotNull(Of T)(ByVal Row As DataRow, Column As String, DefaultValue As T) As T - Return ObjectEx.NotNull(Row.Item(Column), DefaultValue) + Public Shared Function NotNull(Of T)(ByVal pRow As DataRow, pColumn As String, pDefaultValue As T) As T + Return ObjectEx.NotNull(pRow.Item(pColumn), pDefaultValue) End Function End Class diff --git a/Base/ModuleExtensions.vb b/Base/ModuleExtensions.vb index 816bf1b6..8698cfec 100644 --- a/Base/ModuleExtensions.vb +++ b/Base/ModuleExtensions.vb @@ -78,6 +78,7 @@ Public Module ModuleExtensions Public Function ItemEx(Of T)(pRow As DataRow, pFieldName As String, Optional pDefaultValue As T = Nothing) As T Try + If TableContainsColumn(pRow.Table, pFieldName) = False Then Return pDefaultValue Return ObjectEx.NotNull(pRow.Item(pFieldName), pDefaultValue) Catch ex As Exception Return Nothing @@ -87,6 +88,7 @@ Public Module ModuleExtensions Public Function ItemEx(Of T)(pRow As DataRow, pFieldIndex As Integer, Optional pDefaultValue As T = Nothing) As T Try + If TableContainsColumn(pRow.Table, pFieldIndex) = False Then Return pDefaultValue Return ObjectEx.NotNull(pRow.Item(pFieldIndex), pDefaultValue) Catch ex As Exception Return Nothing @@ -114,4 +116,26 @@ Public Module ModuleExtensions Return Nothing End Try End Function + + Private Function TableContainsColumn(pTable As DataTable, pColumnName As String) As Boolean + Try + If pTable Is Nothing Then Return False + If String.IsNullOrEmpty(pColumnName) Then Return False + + Return pTable.Columns.Contains(pColumnName) + Catch ex As Exception + Return False + End Try + End Function + + Private Function TableContainsColumn(pTable As DataTable, pColumnIndex As Integer) As Boolean + Try + If pTable Is Nothing Then Return False + If String.IsNullOrEmpty(pColumnIndex) Then Return False + + Return pTable.Columns.Count > pColumnIndex + Catch ex As Exception + Return False + End Try + End Function End Module