Параметры, которые используются в командах, могут быть нескольких типов. Тип параметра задается с помощью свойства Direction
объкта SqlParameter. Данное свойство принимает одно из значений перечисления ParameterDirection:
Input
: параметр является входным, то есть предназначен для передачи значений в sql-выражение запроса. Это значение по умолчанию для всех параметровInputOutput
: параметр может быть как входным, так и выходным.Output
: параметр является выходным, то есть используется для возвращения запросом каких-либо значенийReturnValue
: параметр представляет результат выполнения выражения или хранимой процедуры
Используем выходные параметры для возвращения id строки, которая была добавлена:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True"; int age = 23; string name = "Kenny"; string sqlExpression = "INSERT INTO Users (Name, Age) VALUES (@name, @age);SET @id=SCOPE_IDENTITY()"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); SqlCommand command = new SqlCommand(sqlExpression, connection); // создаем параметр для имени SqlParameter nameParam = new SqlParameter("@name", name); // добавляем параметр к команде command.Parameters.Add(nameParam); // создаем параметр для возраста SqlParameter ageParam = new SqlParameter("@age", age); // добавляем параметр к команде command.Parameters.Add(ageParam); // параметр для id SqlParameter idParam = new SqlParameter { ParameterName = "@id", SqlDbType = SqlDbType.Int, Direction = ParameterDirection.Output // параметр выходной }; command.Parameters.Add(idParam); command.ExecuteNonQuery(); // получим значения выходного параметра Console.WriteLine("Id нового объекта: {0}", idParam.Value); } |
Здесь к sql-выражению добавляется операция присвоения параметру id идентификатора добавленной строки: SET @id=SCOPE_IDENTITY()
. Для определения параметра используются его свойства. ParameterName
задает имя параметра, SqlDbType
указывает на тип параметра, а свойство Direction
определяет тип параметра.
После выполнения команды параметр получает значение, которое мы можем получить через его свойство Value
:
1 |
Console.WriteLine("Id нового объекта: {0}", idParam.Value); |