У меня есть метод, который либо добавляет, либо обновляет запись в БД (SQL Server), и возвращает RecordID в качестве выходного параметра (Int32), а результат успеха/сбоя - как (Int32) Возвращаемое значение.Почему мне нужно указать значение возвращаемого значения для SQL-запроса?
Учитывая, что я указываю тип этих параметров, зачем мне их бросать, когда они возвращаются?
Я ожидал использовал следующее:
enquiryID = cmd.Parameters["@EnquiryID"].Value;
... но я и до того, чтобы прыгать через пару дополнительных обручи:
enquiryID = Int32.Parse(cmd.Parameters["@EnquiryID"].Value.ToString());
Это не конец света, но это просто похоже на долговременное решение. Почему Parameters.Value возвращает объект SqlParameters.Value, а не Int32?
UPDATE:
ОК, я уверен, - прямое литье FTW: (int)cmd.Parameters["@EnquiryID"].Value
Это может оказаться предпочтительнее кучу если заявления 'INT значение = value.Equals (DBNull.Value)? null: (int) value' Вместо null вы также можете поместить значение по умолчанию –
Re: sql server, выполняющий литье - Да, это имеет смысл. FYI, значение никогда не будет равно нулю, но проблема (и ваш пример) стоит отметить. Спасибо – CJM
@Chris T: Я всегда забываю? оператора, так как я редко использую его, спасибо! –