Index: ActiviteitenOpvolging/ActiviteitenOpvolging/mappers/CacheMapper.vb =================================================================== diff -u -r1677 -r1678 --- ActiviteitenOpvolging/ActiviteitenOpvolging/mappers/CacheMapper.vb (.../CacheMapper.vb) (revision 1677) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/mappers/CacheMapper.vb (.../CacheMapper.vb) (revision 1678) @@ -99,9 +99,12 @@ Private Function ExtractItemFromDataReader(Of T)(ByRef dr As OdbcDataReader, key As String, Optional defaultValue As T = Nothing) As T Dim value As Object Try + 'Check if the column name is not present. If not present, return default value. + if not HasColumn(dr, key) Then Return defaultValue + 'Extract the value with the key. value = dr.Item(key) - 'Check if the value is DBNull or normal Nothing. + 'Check if the value is DBNull or Nothing. If IsDBNull(value) Or value Is Nothing Then 'If so, return default value. Return defaultValue @@ -117,5 +120,21 @@ End Try End Function + ''' + ''' Check if the data reader has a column with that name. + ''' + ''' + ''' + ''' + Public Function HasColumn(ByRef dr As OdbcDataReader, columnName As String) As Boolean + 'Loop through each row. + For Each row As DataRow In dr.GetSchemaTable().Rows + 'Check if column name matches defined one. + If row("ColumnName").ToString() = ColumnName Then Return True + Next + 'Column name was not found. + Return False + End Function + #End Region End Module