Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры_собственные.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
701.16 Кб
Скачать
  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.

Заполним объект DataSet с пом адаптера данных. Сначала создадим строку соединения с БД, строку запроса выборки всех записей из табл «Туристы» и передадим эти строки конструктору SqlDataAdapter. Заполним DataSet новыми DataTable с помощью метода Fill(…) и отобразим содержимое DataSet.

MyDS.Clear();

Console.WriteLine("Заполнение DataSet с помощью адаптера данных:");

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

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 st4="Connect Timeout=30";

// string st5 ="User Instance=True";

string st6 = "Pooling=False;";

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

Console.WriteLine(cn);

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

string stSQL = "Select * From Туристы";

SqlCommand com = new SqlCommand(stSQL, cn);

Console.WriteLine(com.CommandText);

SqlDataAdapter MyAdap = new SqlDataAdapter(com.CommandText, cn);

MyAdap.Fill(MyDS,"Turfirma");

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

Console.WriteLine("Данные DataSet:");

Console.WriteLine("Таблицы в DataSet:" + MyDS.DataSetName);

//Вывод имени DataSet и расширенных свойств:

foreach (System.Collections.DictionaryEntry de in MyDS.ExtendedProperties)

Console.WriteLine("Ключ " + de.Key + " , значение " + de.Value);

Console.WriteLine();

//Вывод каждой таблицы:

foreach (DataTable dt in MyDS.Tables)

{

Console.WriteLine("Таблица :" + dt.TableName);

//Вывод имен столбцов:

for (int curCol = 0; curCol < dt.Columns.Count; curCol++)

Console.Write(dt.Columns[curCol].ColumnName.Trim() + "\t");

Console.WriteLine("\n--------------------------------------------");

//Вывод содержимого DataTable:

for (int curRow = 0; curRow < dt.Rows.Count; curRow++)

{

for (int curCol = 0; curCol < dt.Columns.Count; curCol++)

Console.Write(dt.Rows[curRow][curCol].ToString().Trim() + "\t");

Console.WriteLine();

}

}

MyDS.Clear();

Обновление БД с пом адаптера данных. Адаптеры данных могут не только заполнять табл объекта 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();

Вопросы к экзамену по учебной дисциплине

«Современные технологии программирования»

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]