Получение ReturnValue из cmd.Parameters в c #? - PullRequest
1 голос
/ 29 марта 2010

Я только что закончил преобразование приложения vb.net в c #, и одна из строк - получить @ReturnValue из параметра.

Я закончил тем, что вынужден ЗАБРАТЬ много вещей ..

Есть ли более простой способ

вот что у меня есть

int rc = ((System.Data.SqlTypes.SqlInt32)(((System.Data.SqlClient.SqlParameter)(cmd.Parameters["@ReturnValue"])).SqlValue)).Value;

В vb.net это было так же просто, как сделать это

Dim rc As Integer = Convert.ToInt32(cmd.Parameters("@ReturnValue").Value)

Намного проще: -)

Но проблема с C # заключается в том, что свойство Value недоступно, если я не приведу к SqlParameter, и мне также нужно привести к Sqltypes.SqlInt32 - я не могу просто сделать стандартный Convert.ToInt32

Ответы [ 2 ]

3 голосов
/ 29 марта 2010

Это не C # по сравнению с VB.NET - речь идет о типах, которые вы используете для объявления ваших переменных. Если cmd является IDbCommand, вас ожидает много кастингов.

Свойство IDbCommand.Parameters возвращает IDataParametersCollection, которое содержит коллекцию экземпляров Object. Поскольку у объекта нет свойства с именем Value, вам необходимо привести каждый экземпляр к SqlParameter, прежде чем получить доступ к значению.

SqlCommand.Parameters, напротив, это SqlParameterCollection, который содержит коллекцию SqlParameter экземпляров. Если вы объявите переменную cmd как SqlCommand, вы сможете получить доступ к значениям ее параметров простым и понятным способом. (Ценой тесной связи с реализациями в пространстве имен SqlClient.)

2 голосов
/ 29 марта 2010

Это так же легко сделать в C #:

int rc = (int) cmd.Parameters("@ReturnValue").Value;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...