Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка приложений баз данных (Visual Studio 2008).docx
Скачиваний:
143
Добавлен:
26.03.2016
Размер:
1.01 Mб
Скачать

Взаимодействие с базой данных через команды Вставка новых записей с помощью командных объектов

В ADO.NET для манипуляции с данными могут использоваться команды, реализованные в виде SQL-запросов или хранимых процедур (DataCommand). Например, инструкции SQL, изменяющие данные (например, INSERT, UPDATE, или DELETE), не возвращают строки. Аналогичным образом, многие хранимые процедуры выполняют некоторое действие, но не возвращают строки. Для выполнения команд, не возвращающих строки, следует создать объект Commandс соответствующей командой SQL и объектConnection, включающий любую требуемую коллекциюParameters. Выполните команду с помощью методаExecuteNonQueryобъектаCommand.

Метод ExecuteNonQueryвозвращает значение типа integer, представляющее число строк, затрагиваемых выполненной инструкцией или хранимой процедурой. Если выполняется несколько инструкций, возвращенное значение является суммой количеств записей, затронутых всеми выполненными инструкциями.

В следующей процедуре в качестве примера используется таблица Region базы данных Borei.

Для вставки новых записей в базу данных с помощью командных объектов следуетсоздать новый командный объект, задав его свойства Connection, CommandType и CommandText.

System.Data.SqlClient.SqlConnection sqlConnection1 =

new System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING");

System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();

cmd.CommandType = System.Data.CommandType.Text;

cmd.CommandText = "INSERT Region (RegionID, RegionDescription) VALUES (5, 'NorthWestern')";

cmd.Connection = sqlConnection1;

sqlConnection1.Open();

cmd.ExecuteNonQuery();

sqlConnection1.Close();

В следующем примере кода также выполняется инструкция INSERT для вставки записи в базу данных с помощью ExecuteNonQuery.

Язык C#

// Assumes connection is a valid SqlConnection.

connection.Open();

string queryString = "INSERT INTO Customers " +

"(CustomerID, CompanyName) Values('NWIND', 'Northwind Traders')";

SqlCommand command = new SqlCommand(queryString, connection);

Int32 recordsAffected = command.ExecuteNonQuery();

В следующем примере кода выполняется хранимая процедура, созданная образцом кода в разделе Выполнение операций над каталогами. Ни одна строка не возвращается хранимой процедурой, так что при использовании метода ExecuteNonQuery хранимая процедура получает входной параметр и возвращает выходной параметр и значение.

Что касается объекта OleDbCommand, то параметр ReturnValue должен быть добавлен к коллекции Parameters в первую очередь.

Язык C#

// Assumes connection is a valid SqlConnection.

SqlCommand command = new SqlCommand("InsertCategory" , connection);

command.CommandType = CommandType.StoredProcedure;

SqlParameter parameter = command.Parameters.Add(

"@RowCount", SqlDbType.Int);

parameter.Direction = ParameterDirection.ReturnValue;

parameter = command.Parameters.Add(

"@CategoryName", SqlDbType.NChar, 15);

parameter = command.Parameters.Add("@Identity", SqlDbType.Int);

parameter.Direction = ParameterDirection.Output;

command.Parameters["@CategoryName"].Value = "New Category";

command.ExecuteNonQuery();

Int32 categoryID = (Int32) command.Parameters["@Identity"].Value;

Int32 rowCount = (Int32) command.Parameters["@RowCount"].Value;