Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по C#_Часть1.doc
Скачиваний:
138
Добавлен:
19.08.2019
Размер:
2.54 Mб
Скачать
    1. Модификация строк в наборах данных

      1. Добавление строк в наборы данных

Изменение данных в DataSet представляет собой процесс управления фактическими данными в отдельных объектах DataTable, которые составляют набор данных. Изменение данных в таблицах данных подобно изменению данных в таблице любой базы данных — процесс может включать вставку, обновление и удаление записей таблицы.

Кроме изменения фактических данных, также можно запрашивать DataTable для возвращения определенных строк данных, например, отдельных строк, определенных версий строк (исходные и предложенные), только измененных строк и строк, которые содержат ошибки.

Добавление строк в объект DataTable

Чтобы добавить новые записи в набор данных:

          1. Создайте новую строку данных и добавить ее в коллекцию DataRow (Rows) набора данных (DataTable):

DataRow имя_строки =Таблица.NewRow();

В результате будет создана пустая строка, содержащие точно такие же поля, как и прописанная в команде таблица.

          1. Модифицируйте вновь добавленную строку, обращаясь к ее полям с помощью индекса:

Имя_строки[№ поля] = значение;

или имени столбца:

Имя_строки["поле"] = значение;

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

          1. После вставки данных в новую строку для добавления строки в объект DataRowCollection примените метод Add:

Таблица.Rows.Add(имя_строки);

Примечание. Второй и третий шаг можно реализовать одной командой, если вызвать метод Add для добавления новой строки путем передачи массива значений с типом Object:

Таблица.Rows.Add(new Object[] {значение, значение, …})

Пример: Добавить значения из текстовых полей в таблицы person и worker с последующим обновлением на форме можно с помощью кода:

sotrudnicDataSet1.person.Rows.Add(new Object[] { textBox1.Text,

textBox2.Tex), textBox3.Text, textBox4.Text });

sotrudnicDataSet1.worker.Rows.Add(new Object[] { textBox2.Text,

textBox5.Text, textBox6.Text });

this.tableAdapterManager.UpdateAll(this.sotrudnicDataSet1);

allTableAdapter.Fill(this.sotrudnicDataSet1.All);

Результат:

Передача массива значений с типом Object в метод Add приводит к созданию новой строки в таблице и заданию значений столбцов этой строки, соответствующих значениям в массиве объектов. Обратите внимание, что значения в массиве сопоставляются со столбцами последовательно, с учетом порядка этих столбцов в таблице.

Внимание. Преобразование типов не требуется.

Того же самого результата можно было добиться с помощью кода:

DataRow rp = sotrudnicDataSet1.person.NewRow();

rp["pol"] = textBox4.Text;

rp["fio"] = textBox1.Text;

rp["data"] = Convert.ToDateTime(textBox3.Text);

rp["pasport"] = Convert.ToInt32(textBox2.Text);

DataRow rw = sotrudnicDataSet1.worker.NewRow();

rw["pasport"] = Convert.ToInt32(textBox2.Text);

rw["work"] = textBox5.Text;

rw["salary"] = Convert.ToInt32(textBox6.Text);

sotrudnicDataSet1.person.Rows.Add(rp);

sotrudnicDataSet1.worker.Rows.Add(rw);

this.tableAdapterManager.UpdateAll(this.sotrudnicDataSet1);

allTableAdapter.Fill(this.sotrudnicDataSet1.All);