UpdateCommand
Свойство предоставляет или устанавливает текст команды (SQL-запроса), используемой для обновления записей в источнике данных.
При использовании метода Update в случае, когда это свойство не задано и данные первичного ключа имеются в объекте DataSet, свойство UpdateCommand будет создаваться автоматически, если объект DbDataAdapter связан с объектом DbCommandBuilder.
Декларация
[BrowsableAttribute(false)]
public DbCommand UpdateCommand {get; set;};
Значение свойства
Интерфейс IDbCommand, используемый во время применения метода Update для обновления записей в источнике данных, соответствующих измененным строкам в наборе данных.
Исключения
Отсутствуют.
Пример
// C#
using System;
using System.Data;
using System.Data.Common;
class UpdateCommandSample
{
static void Main()
{
// Создание фабрики классов провайдера
DbProviderFactory factory =
DbProviderFactories.GetFactory("System.Data.LinterClient");
// Соединение с БД
DbConnection con = factory.CreateConnection();
con.ConnectionString =
"Data Source=LOCAL;User ID=SYSTEM;Password=MANAGER8";
con.Open();
// Создание таблицы БД
DbCommand cmd = factory.CreateCommand();
cmd.Connection = con;
cmd.CommandText =
"create or replace table users ( " +
"id integer primary key, name varchar(70));" +
"insert into users (id, name) values (0, 'Пользователь A');" +
"insert into users (id, name) values (1, 'Пользователь B');";
cmd.ExecuteNonQuery();
// Создание команды для выборки записей
DbCommand selectCommand = factory.CreateCommand();
selectCommand.Connection = con;
selectCommand.CommandText =
"select id, name from users";
// Создание параметров для обновления записей
DbParameter parOldId = factory.CreateParameter();
parOldId.ParameterName = ":oldId";
parOldId.SourceColumn = "id";
parOldId.Direction = ParameterDirection.Input;
parOldId.DbType = DbType.Int32;
parOldId.SourceVersion = DataRowVersion.Original;
DbParameter parId = factory.CreateParameter();
parId.ParameterName = ":id";
parId.SourceColumn = "id";
parId.Direction = ParameterDirection.Input;
parId.DbType = DbType.Int32;
parId.SourceVersion = DataRowVersion.Current;
DbParameter parName = factory.CreateParameter();
parName.ParameterName = ":name";
parName.SourceColumn = "name";
parName.Direction = ParameterDirection.Input;
parName.DbType = DbType.String;
parName.Size = 70;
// Создание команды для обновления записи
DbCommand updateCommand = factory.CreateCommand();
updateCommand.Connection = con;
updateCommand.CommandText =
"update users set id = :id, name = :name where id = :oldId";
updateCommand.Parameters.Add(parId);
updateCommand.Parameters.Add(parName);
updateCommand.Parameters.Add(parOldId);
// Создание объекта DbDataAdapter
DbDataAdapter adapter = factory.CreateDataAdapter();
adapter.SelectCommand = selectCommand;
adapter.UpdateCommand = updateCommand;
// Заполнение объекта DataTable данными из таблицы БД
DataTable users = new DataTable();
adapter.Fill(users);
// Изменение записей в таблице DataTable
users.Rows[0]["name"] = "Новый Пользователь A";
users.Rows[1]["name"] = "Новый Пользователь B";
// Обновление БД
adapter.Update(users);
// Отображение таблицы после обновления
Console.WriteLine("Строки таблицы после обновления:");
foreach (DataRow row in users.Rows)
{
Console.WriteLine("{0}: '{1}' ", row[0], row[1]);
}
// Освобождение ресурсов
con.Close();
}
}