OracleDataReader GetDouble ошибка cast is not valid

400
04 февраля 2017, 07:12

Добрый день! Видел много вопросов по этому поводу но ответа так и не нашёл

вот мой код

connection.Open();
OracleCommand command = connection.CreateCommand();
string sql="select  t2.NAME, Round((cast(localtimestamp as date)  - cast(t4.CREATED as date))*24*60,2) ,t3.NAME,localtimestamp  from MFSTRANSPORTORDER  t1 left join MFSTRANSPORTUNIT t2 on t2.ID=t1.TRANSPORTUNIT_ID left join MFSSTORAGELOCATION t3 on t3.ID=t2.STORAGELOCATION_ID  left join MFSTRANSPORTORDERREQUEST t4 on t2.ID=t4.TRANSPORTUNIT_ID where t3.NAME is NOT NULL";
command.CommandText = sql;
OracleDataReader reader = command.ExecuteReader();
var lst = new List<Data>();
if (reader.HasRows)
     {
    while(reader.Read()){
    var row = new Data();
    row.Name = reader.GetString(0);
    if(!reader.IsDBNull(1))
    row.Time = reader.GetDouble(1);
    row.Place = reader.GetString(2);
    row.dt = reader.GetDateTime(3);
}
int g = lst.Count;
Data []temp=new Data[g];
temp = lst.ToArray();
}
connection.Close();

В строке запроса меня интересует второй столбец

Round((cast(localtimestamp as date)  - cast(t4.CREATED as date))*24*60,2) 

При выволнении

row.Time = reader.GetDouble(1);

появляется ошибка

SystemInvalidCastException: Specified cast is not valid

В этом поле должно быть число вида 2,45

Как убрать эту ошибку?

Answer 1

Как насчет того, чтобы узнать настоящий тип значения, а потом вызвать соответствующий метод?

reader.GetFieldType(1)

Возможно, там лежит decimal:

reader.GetDecimal(1)
READ ALSO
Как установить путь к 7z.dll?

Как установить путь к 7z.dll?

Установлены библиотеки через nuget: 1) SevenZipSharp

583
Как задать значение по умолчанию для свойства типа Font в PropertyGrid?

Как задать значение по умолчанию для свойства типа Font в PropertyGrid?

Для того, чтобы отобразить свойства и поля моего класса в PropertyGrid, я для них задаю атрибуты PropertyGridНапример :

416
Как использовать Costura.Fody?

Как использовать Costura.Fody?

Не могу найти что дальше делать для внедрения dll в exe после

738