(LocalVariable) ABC.string (Имя) = (Idatareader)datareader. GetString (0);
это значение имени прибывает из базы данных.. чем здесь состоит в том случай, если это значение имени является нулевым при чтении, это выдает исключение?
Я вручную делаю некоторых если условие здесь. Я не хочу писать ручное условие проверить все мои переменные..
Я делаю что-то вроде этого теперь..
string abc = (Idatareader)datareader.GetValue(0);
if(abc = null)
//assiging null
else
assiging abc value
есть ли, чему-то нравится, мы можем записать дополнительный метод для этого?спасибо
Вот пара методов расширения, которые помогут решить все ваши проблемы, связанные с получением строго типизированных значений из средства чтения данных. Если значение равно DbNull, будет возвращен тип по умолчанию. В случае строки
, которая является классом, будет возвращен null
. Если поле было int
, то было бы возвращено 0
. Кроме того, если вы ожидаете int?
, скажем, из обнуляемого поля int, будет возвращено null
.
Конкретное использование для случая Кумара:
string abc = datareader.GetValueOrDefault<string>(0);
Общее использование
var name = GetValueOrDefault<string>(reader, "Name");
или
var name = reader.GetValueOrDefault<string>("Name");
или
var name = reader.GetValueOrDefault<string>(0);
Расширение
public static class NullSafeGetter
{
public static T GetValueOrDefault<T>(this IDataRecord row, string fieldName)
{
int ordinal = row.GetOrdinal(fieldName);
return row.GetValueOrDefault<T>(ordinal);
}
public static T GetValueOrDefault<T>(this IDataRecord row, int ordinal)
{
return (T)(row.IsDBNull(ordinal) ? default(T) : row.GetValue(ordinal));
}
}
из http://skysanders.net/subtext/archive/2010/03/02 /generic-nullsafe-idatarecord-field-getter.aspx
Я бы использовал что-то вроде этого:
string abc = (IDataReader)datareader.GetValue(0) ?? "Default";