Как преобразовать возвращаемое значение из команды Oracle [duplicate]

У меня есть другая перспектива ответить на это.

При работе на разных уровнях, например, в приложении MVC, контроллеру нужны службы для вызова бизнес-операций. В таких сценариях контейнер инжекции зависимостей может использоваться для инициализации служб, чтобы исключить исключение NullReferenceException. Это означает, что вам не нужно беспокоиться о проверке нулевого значения и просто вызвать службы с контроллера, как будто они всегда будут доступны (и инициализированы) как одиночный или прототип.

public class MyController
{
    private ServiceA serviceA;
    private ServiceB serviceB;

    public MyController(ServiceA serviceA, ServiceB serviceB)
    {
        this.serviceA = serviceA;
        this.serviceB = serviceB;
    }

    public void MyMethod()
    {
        // We don't need to check null because the dependency injection container 
        // injects it, provided you took care of bootstrapping it.
        var someObject = serviceA.DoThis();
    }
}
21
задан felixmm 11 June 2010 в 21:32
поделиться

4 ответа

Как насчет

existsCount = int.Parse(cmd.Parameters["successCount"].Value.ToString());
23
ответ дан Jürgen Steinblock 27 August 2018 в 22:15
поделиться
  • 1
    Правильно! Спасибо, сейчас я выгляжу глупо. Но большое спасибо. – felixmm 12 June 2010 в 14:07
  • 2
    Ну, это не глупо. Convert.To ... должен быть лучшим выбором, если он доступен. Поскольку int.Parse () в основном просто анализирует строковое значение, которое должно быть немного более накладным. Тем не менее, одна вещь, которая может работать (вообще не думала об этом): existsCount = (int) cmd.Parameters [& quot; successCount & quot;]. Значение, если есть явное преобразование, предоставляемое Oracle lib. – Jürgen Steinblock 12 June 2010 в 14:28
  • 3
    Ой, нет TryParse? – Tom Stickel 4 October 2011 в 20:40
  • 4
    Почему TryParse? Если OracleDecimal может быть проанализирован, вы должны быть в порядке. Если возвращаемое значение выходит за пределы int32, бросание исключения лучше, чем просто молча игнорирование факта. В этом специальном случае int.Parse () лучше (просто мое мнение). – Jürgen Steinblock 6 October 2011 в 09:00
  • 5
    Преобразование числового типа в строку только для преобразования его в числовое значение просто неверно. – Greg Z. 27 June 2017 в 21:48

Более эффективно использовать

Convert.ToInt32((decimal)(OracleDecimal)(cmd.Parameters["successCount"].Value))
2
ответ дан filmor 27 August 2018 в 22:15
поделиться

Я предлагаю вам преобразовать в String, после чего вы конвертируете из String в Integer.

Dim tmpIdSesiónCalificación As String = 
    parametroIdSesiónCalificación.Value.ToString
_idSesiónCalificación = Convert.ToInt32(tmpIdSesiónCalificación)
-1
ответ дан Gorgsenegger 27 August 2018 в 22:15
поделиться

Вы также можете попробовать:

Oracle.DataAccess.Types.OracleDecimal d = (Oracle.DataAccess.Types.OracleDecimal)cmd.Parameters["successCount"].Value;

if( d.IsNull )
    existsCount = 0;
else
    existsCount = d.ToInt32( );
32
ответ дан Karim Budhwani 27 August 2018 в 22:15
поделиться
  • 1
    Я тестировал это, и он имеет лучшую производительность, чем предыдущее решение. – Meryovi 3 April 2013 в 16:26
  • 2
    Это самый правильный ответ - не знаю, почему все это на дне. – Greg Z. 27 June 2017 в 21:48
Другие вопросы по тегам:

Похожие вопросы: