1

I'm trying to populate my Request using the IDataReader but for some of the properties the values are coming back as null from the database, this then throws an exception because it doesn't like the null.

    public static void Populate(IDataReader datareader, Request request)
    {
        request._requestID = datareader.IsDBNull(datareader.GetOrdinal("RequestID")) ? null : (int?)datareader.GetInt32(datareader.GetOrdinal("RequestID"));
        request._appversion = datareader.GetString(datareader.GetOrdinal("AppVersion"));
        request._apprequestguid = datareader.IsDBNull(datareader.GetOrdinal("AppRequestGUID")) ? null : datareader.GetString(datareader.GetOrdinal("AppRequestGUID"));
        request._sourceip = datareader.IsDBNull(datareader.GetOrdinal("SourceIP")) ? null : datareader.GetString(datareader.GetOrdinal("SourceIP"));
        request._cli = datareader.IsDBNull(datareader.GetOrdinal("CLI")) ? null : datareader.GetString(datareader.GetOrdinal("CLI"));
        request._handsetid = datareader.IsDBNull(datareader.GetOrdinal("HandsetID")) ? null : datareader.GetString(datareader.GetOrdinal("HandsetID"));
        request._service = datareader.IsDBNull(datareader.GetOrdinal("Service")) ? null : datareader.GetString(datareader.GetOrdinal("Service"));
        request._requestrespcode = datareader.IsDBNull(datareader.GetOrdinal("RequestRespCode")) ? null : datareader.GetString(datareader.GetOrdinal("RequestRespCode"));
        request._fraudmatchid = datareader.IsDBNull(datareader.GetOrdinal("FraudMatchID")) ? null : (int?)datareader.GetInt32(datareader.GetOrdinal("FraudMatchID"));
        request._action = datareader.IsDBNull(datareader.GetOrdinal("Action")) ? null : datareader.GetString(datareader.GetOrdinal("Action"));
        request._detail = datareader.IsDBNull(datareader.GetOrdinal("Detail")) ? null : datareader.GetString(datareader.GetOrdinal("Detail"));
        request._apprespcode = datareader.IsDBNull(datareader.GetOrdinal("AppRespCode")) ? null : datareader.GetString(datareader.GetOrdinal("AppRespCode"));
        request._createddttm = datareader.IsDBNull(datareader.GetOrdinal("CreatedDttm")) ? null : (DateTime?)datareader.GetDateTime(datareader.GetOrdinal("CreatedDttm"));
        request._modifieddttm = datareader.IsDBNull(datareader.GetOrdinal("ModifiedDttm")) ? null : (DateTime?)datareader.GetDateTime(datareader.GetOrdinal("ModifiedDttm"));
    }

I have tried adding but when I debug it doesn't reach the if statement.

        if (request._appversion.Equals(null))
        {
            request._appversion = string.Empty;
        }

What code can I add code so that it doesn't break if it gets a null from the database?

jeffry
  • 327
  • 2
  • 8
  • 23

1 Answers1

1

You can try this approach:

request._detail = Convert.ToString(datareader.Item("Detail"));

It should work because Convert.ToString(Convert.DBNull) = String.Empty.

Reference:

Victor Zakharov
  • 25,801
  • 18
  • 85
  • 151
  • I don't understand what you mean. Could provide a little example please? – jeffry Jul 14 '14 at 16:27
  • @jeffry: Replace your line starting with `request._detail` with the one I provided above. Replace other lines which retrieve strings from a data reader in a similar fashion. Post back with results. – Victor Zakharov Jul 14 '14 at 16:34