Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ODAC C# не может Double? / 2 сообщений из 2, страница 1 из 1
24.07.2018, 08:54
    #39678048
pemp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODAC C# не может Double?
Господа, а как из шарпа к ораклу принято подключаться?
попробовал как рекомендуют, скачал последний ODAC и столкнулся с удивительной штукой:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
string sql = "select 1/3 from dual"; // или любая другая периодическая дробь

OracleConnection con = new OracleConnection(conString);
OracleCommand cmd = new OracleCommand(sql, con);
OracleDataAdapter oda = new OracleDataAdapter(cmd);

// а дальше без разницы
// можнно так 
oda.Fill(dataTable);

//или так 
dataTable.Load(dataTable);
//  или так 
while (dr.Read())
{
   dr[0].ToString();
}
// все валится с ошибками InvalidCastException 



Round в запросе лечит
явный dr.GetDouble() тоже, но это не решение
...
Рейтинг: 0 / 0
25.07.2018, 10:50
    #39678779
pemp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODAC C# не может Double?
Таки проблема в том, что decimal в oracle имеет большую точность чем decimal в дотнете. и из коробки это не работает, разработчик odac не придумал ничего лучше чем невнятно валится в ошибку если вдруг придет число, которое odac не сможет переварить внутри себя.

решения два. первое round или trunc в запросах для любой операции которая потенциально может вернуть число у которого много знаков и надеяться что никто этого не забудет.
второе на клиенте грузить датаадапетром у которого ReturnProviderSpecificTypes = true и вручную приводить типы, для decimal понизить точность
Код: c#
1.
   dotNetDecimalVar = OracleDecimal.SetPrecision(oracleDecimalVar, 27); //  казалось бы должно и с 28  работать, но один уходит на знак.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ODAC C# не может Double? / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]