Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры по C_1.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1.11 Mб
Скачать
  1. Конструкторы:

  • SqlDataAdapter() – инициализирует новый экземпляр класса SqlDataAdapter.

  • SqlDataAdapter(SqlCommand) – инициализирует новый экземпляр класса SqlDataAdapter с помощью указанной команды SqlCommand в качестве свойства SelectCommand.

  • SqlDataAdapter(String, SqlConnection) – инициализирует новый экземпляр класса SqlDataAdapter с помощью SelectCommand и объекта SqlConnection.

  • SqlDataAdapter(String, String) – инициализирует новый экземпляр класса SqlDataAdapter с помощью SelectCommand и строки подключения.

  1. Свойства

  • SelectCommand – возвращает или задает инструкцию Transact-SQL или хранимую процедуру, используемую для выбора записей из источника данных.

  • DeleteCommand – возвращает или задает инструкцию Transact-SQL или хранимую процедуру, используемую для удаления записей из набора данных.

  • InsertCommand – возвращает или задает инструкцию Transact-SQL или хранимую процедуру, используемую для вставки новых записей в источник данных

  1. Методы

  • Dispose() – освобождает все ресурсы, используемые объектом Component. (Унаследовано от Component.)

  • Fill() – заполняет объект DataSet или объект DataTable. (Унаследовано от DbDataAdapter.)

  • GetType – возвращает объект Type для текущего экземпляра. (Унаследовано от Object.)

  • Update() – Выполняет команды SQL-команды Insert, UpDate, Delete для сохранения в базе изменений, выполненных в DataTable.

  1. Передача данных между источником данных и объектом DataSet. Обновление базы данных с помощью адаптера данных.

Обновление базы данных с помощью адаптера данных. Адаптеры данных могут не только заполнять таблицы объекта DataSet, но и поддерживать набор объектов основных SQL-команд, используя их для возвращения модифицированных данных обратно в хранилище данных. При вызове метода Update() адаптера данных проверяется свойство RowState для каждой строки в DataTable и используются соответствующие команды, присвоенные свойствам DeleteCommand, InsertCommand и UpdateCommand адаптера, чтобы записать изменения данного DataTable в источник данных.

При использовании адаптера данных для обновления DataSet необходимо назначить свойствам DeleteCommand, InsertCommand и UpdateCommand действительные (конкретной таблицы БД) объекты команд, а иначе свойства возвратят null.

Добавим новую строку в таблицу «Туристы»:

Console.WriteLine("Обновление базы данных BDTurfirm с помощью объекта адаптера данных:");

Console.WriteLine("Введите информацию о новом туристе! Код туриста++");

int kd = Int32.Parse(Console.ReadLine());

Console.WriteLine("Фамилия?");

string fm = Console.ReadLine();

Console.WriteLine("Имя?");

string nm = Console.ReadLine();

Console.WriteLine("Отчество?");

string otc = Console.ReadLine();

string sql = string.Format("Insert Into Туристы" + "([Код туриста],Фамилия,Имя,Отчество) Values" + "('{0}','{1}','{2}','{3}')",kd, fm, nm, otc);

MyAdap.InsertCommand = new SqlCommand(sql);

MyAdap.InsertCommand.Connection = cn;

// Обновление таблицы Туристы с учетом новой сроки:

DataRow rn =MyDS.Tables["Туристы"].NewRow();

Console.WriteLine("Состояние строки " + rn.RowState);

rn["Код туриста"] = kd;

rn["Фамилия"] = fm;

rn["Имя"] = nm;

rn["Отчество"] = otc;

MyDS.Tables["Туристы"].Rows.Add(rn);

Console.WriteLine("Состояние строки " + rn.RowState); MyAdap.Update(MyDS.Tables["Туристы"]);

После создания объекта команды он «подключается» к адаптеру с помощью свойства InsertCommand. Затем в таблицу «Туристы» добавляется новая строка и адаптер выполнит SQL-команду, так как свойство новой строки RowState – Added.

Модифицируем выбранную строку таблицы «Туристы»:

//////////////////////////////////////////////////////////

Console.WriteLine("Модификация строки!");

Console.WriteLine("Введите код туриста для выбора строки!");

int kdd = Int32.Parse(Console.ReadLine()); Console.WriteLine("Введите новую фамилию туриста для выбранной строки!");

string nfam = Console.ReadLine();

string ssql = string.Format("Update Туристы Set Фамилия ='{0}' where [Код туриста]={1}",nfam,kdd);

MyAdap.UpdateCommand = new SqlCommand(ssql);

MyAdap.UpdateCommand.Connection = cn;

DataRow [] mas_rows = MyDS.Tables["Туристы"].Select(string.Format("[Код_туриста]={0}",kdd));

mas_rows[0]["Фамилия"] = nfam;

// Метод Select выбирает строку и помещает ее в массив объектов DataRow. Нужно указать какую именно строку меняем – mas_rows[0.

Параметр метода Select является строкой, которая содержит некоторое условное выражение.

Console.WriteLine("Состояние строки " + mas_rows[0].RowState);

MyAdap.Update(MyDS.Tables["Туристы"]);

Console.WriteLine("Состояние строки " + mas_rows[0].RowState);

Удалим указанную строку таблицы «Туристы»:

Console.WriteLine("Удаление строки!");

Console.WriteLine("Введите код туриста для удаления строки!");

int cd = Int32.Parse(Console.ReadLine());

string ql = string.Format("Delete from Туристы where [Код туриста]={0}",cd);

Console.WriteLine("Команда удаления " + ql);

SqlCommand cmd = new SqlCommand(ql,cn);

MyAdap.DeleteCommand = cmd;

string fltr = string.Format("[Код туриста]={0}", cd);

DataRow[] mas = MyDS.Tables["Туристы"].Select(fltr);

mas[0].Delete();

Console.WriteLine("Состояние строки " + mas[0].RowState);

MyAdap.Update(MyDS.Tables["Туристы"]);

Console.WriteLine("Состояние строки " + mas[0].RowState);

MyDS.Clear();

Динамическое получение остальных объектов команд во время работы с помощью построителя команд SqlCommandBuilder. Каждый поставщик данных предлагает тип построителя команд, который позволяет автоматически получать объекты команд, содержащие правильные типы команд Delete, Insert и Update на базе исходного оператора Select.

SqlConnection cn = new SqlConnection();

string st1 = "Data Source=.\\SQLExpress;";

string st2 = "AttachDbFilename=\"C:\\Program Files\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\Data\\BDTur_firm.mdf\";";

string st3 = "Integrated Security=True;";

string st6 = "Pooling=False;";

cn.ConnectionString = st1 + st2 + st3 + st6;

Console.WriteLine(cn);

Console.WriteLine(st1 + st2 + st3 + st6);

SqlDataAdapter MyAdap = new SqlDataAdapter("Select * From Туристы", cn);

SqlCommandBuilder builder = new SqlCommandBuilder(MyAdap);