Object cannot be cast from DBNull to other types
когда вызываю функцию происходит ошибка => Object cannot be cast from DBNull to other types. можете помочь решить эту проблему
public static Resp<List<Pers>> Getc()
{
var resp = new Resp<List<Pers>>(){Value = new List<Pers>}
using (var c = new OracleConnection(Settings.Default.MyConnection))
using(var cm = new OracleCommana("procedureName, c"))
{
var cur = new OracleParameter("R", Oracle.Cursor);
racleDataReader read;
cmd.CommandType = commandType.StoredProcedure;
cmd.Parameters.Clear();
cmd.Parameters.Add(cur);
cmd.Connection.Open();
while(reader.Read())
{
var rec = new Pers();
record.Acct = Convert.ToInt32(reader["T"]);
record.Ac = reader["acco"].Tostring();
record.Date = Convert.ToDatetime(reader[date]);
resp.VAlue.Add(rec);
}
}
return resp;
}
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Если где-то у вас может прийти null из БД, то нужно это явно проверять:
record.Acct = reader["T"] == DBNull.Value ? (Int32?) null : Convert.ToInt32(reader["T"]);
Ну или если использовать как специальное значение 0 или там -1, а не null, то можно использовать обычный int, а не nullable:
record.Acct = reader["T"] == DBNull.Value ? -1 : Convert.ToInt32(reader["T"]);