Ошибка времени выполнения IDataReader
Я пытаюсь заполнить свой запрос с использованием IDataReader, но для некоторых свойств значения возвращаются из базы данных как нулевые, тогда возникает исключение, потому что ему не нравится нулевое значение.
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"));
}
Я попытался добавить, но когда я отлаживаю, он не достигает оператора if.
if (request._appversion.Equals(null))
{
request._appversion = string.Empty;
}
Какой код я могу добавить код, чтобы он не сломался, если он получает нулевой из базы данных?
1 ответ
Решение
Вы можете попробовать этот подход:
request._detail = Convert.ToString(datareader.Item("Detail"));
Это должно работать, потому что Convert.ToString(Convert.DBNull) = String.Empty
,
Ссылка: