SqlDataAdapter с параметром вывода

Я работал с SqlDataAdapter, который выполняет операцию вставки и должен отображать столбец идентификаторов в качестве выходного параметра в приложении.

Вот мой код

// created connection object
SqlDataAdapter da = new SqlDataAdapter();

da.SelectCommand = new SqlCommand("GetPersons",con);
da.SelectCommand.CommandType = CommandType.StoredProcedure;

da.InsertCommand  = new SqlCommand("IPersons",con);
da.InsertCommand .CommandType = CommandType.StoredProcedure;
da.InsertCommand .Parameters.AddWithValue("@Name", txtname.Text);

// output param
SqlParameter param = new SqlParameter();
param.ParameterName = "@ID";
param.DbType = DbType.Int32;
param.Direction = ParameterDirection.Output;
da.InsertCommand.Parameters.Add(param);

DataSet ds = new DataSet();
da.Fill(ds);

string var = da.InsertCommand.Parameters["@ID"].Value.ToString();

..но в последней строке я не могу получить значение выходного параметра, он показывает нулевое значение

Это хранимая процедура:

Create Procedure [dbo].[IPersons]
     @Name varchar(255) = null,
     @ID int Out
AS
Begin
     insert into Persons values(@Name)

     select @ID = scope_Identity()
End

Что мне не хватает при удалении выходного параметра?


person neeraj    schedule 26.04.2015    source источник
comment
Вы не можете получить значение выходного параметра после заполнения набора данных, потому что метод fill не использует InsertCommand, он использует SelectCommand.   -  person Zohar Peled    schedule 26.04.2015
comment
Вам понадобится метод ExecuteScalar, если вы хотите получить какой-либо выходной параметр.   -  person Youssef Lourayad    schedule 26.04.2015
comment
@Lourayad: Неправильно. можно использовать любой метод выполнения, чтобы вернуть выходной параметр. здесь проблема не в этом. neeraj: Прочтите это   -  person Zohar Peled    schedule 26.04.2015