Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Благодарности 19 страница






phonesDataTable.AcceptChanges();

Как видите, мы здесь вначале с помощью фильтра отбираем нужные записи из таблицы Phones, а потом удаляем их при помощи известного Вам метода Delete. Метод AcceptChanges завершает процедуру удаления.

Добавление номера телефона

Выделив в верхнем списке имя человека, пользователь может добавить для него один или несколько телефонов. Эта операция выполняется при помощи кнопки Добавить, расположенной возле списка телефонов.

Вот обработчик событий для этой кнопки:

private void button4_Click(object sender, System.EventArgs e)
{
if(phoneTextBox.Text! = " ")
{
try
{
DataRow rowPhone = phonesDataTable.NewRow();
rowPhone[" idContacts" ] = currentContactId;
rowPhone[" Телефон" ] = phoneTextBox.Text;
phonesDataTable.Rows.Add(rowPhone);
}
catch (Exception ex)
{
}

phonesUpdate();
}
}

Здесь мы вначале проверяем, что поле нового телефона phoneTextBox не пустое. Если это так, то мы создаем в таблице Phones новую строку как объект класса DataRow, вызывая для этого метод phonesDataTable.NewRow.

Номер добавляемого телефона мы сохраняем в столбце Телефон. Что же касается столбца idContacts, то мы записываем в него идентификатор строки таблицы Contact. Это та самая строка, которая содержит имя, выбранное пользователем в списке контактов.

Заполненная строка добавляется в таблицу Phones методом phonesDataTable.Rows.Add.

И, наконец, после добавления строки наш обработчик событий обновляет содержимое списка телефонов в окне программы методом phonesUpdate.

Удаление номера телефона

Для удаления номера телефона предназначена кнопка Удалить, расположенная возле списка телефонов.

Вот обработчик событий для этой кнопки:

private void button6_Click(object sender, System.EventArgs e)
{
try
{
string filter =
" id='" + listView2.SelectedItems[0].Tag.ToString() + " '";

DataRow[] phones = phonesDataTable.Select(filter);

for(int i = 0; i < phones.Length; i++)
{
if(phones.Length! = 0)
{
phones[i].Delete();
}
}
}
catch (Exception ex)
{
}

phonesDataTable.AcceptChanges();
phonesUpdate();
}

Прежде всего, наш обработчик определяет идентификатор строки таблицы Phones, подлежащей удалению. Напомним, что этот идентификатор хранится в столбце id упомянутой таблицы. При формировании списка listView2 идентификаторы соответствующих строк сохраняются в свойствах Tag элементов этого списка.

Чтобы стереть строку, мы создаем фильтр filter, при помощи которого мы сможет получить первую строку из списка выделенных строк. Далее при помощи метода phonesDataTable.Select мы выделяем нужную строку и затем удаляем ее методом Delete.

Окончательные изменения в таблицу Phones вносятся методом phonesDataTable.AcceptChanges, после чего методом phonesUpdate выполняется обновление списка телефонов.

Изменение номера телефона

Для изменения номера телефона используется кнопка Изменить, расположенная справа от списка телефонов. исходный текст обработчика событий для этой кнопки представлен ниже:

private void button5_Click(object sender, System.EventArgs e)
{
if(phoneTextBox.Text! = " ")
{
try
{
string filter = " id='" +
listView2.SelectedItems[0].Tag.ToString() + " '";
DataRow[] phones = phonesDataTable.Select(filter);

phones[0].BeginEdit();
phones[0][" Телефон" ] = phoneTextBox.Text;
phones[0].EndEdit();
}
catch (Exception ex)
{
}

phonesDataTable.AcceptChanges();
phonesUpdate();
}
}

Если строка нового номера телефона phoneTextBox не пуста, то обработчик события button5_Click выделяет с помощью фильтра нужную строку в таблице Phones и затем изменяет содержимое ячейки в столбце Телефон.

Данная операция выполняется аналогично операции изменения содержимого строк таблицы Contacts, описанной ранее в разделе «Редактирование записей таблицы Contacts».

Обновление списка контактов

При описании исходных текстов приложения PhoneBookApp мы неоднократно упоминали метод listUpdate, обновляющий содержимое списка listView1 из таблицы Contacts. Вот его исходный текст:

public void listUpdate()
{
listView1.Items.Clear();

foreach(DataRow row in contactsDataTable.Rows)
{
ListViewItem lvi = new ListViewItem(row[" Имя" ].ToString());
lvi.SubItems.Add(row[" Фамилия" ].ToString());
lvi.SubItems.Add(row[" id" ].ToString());
lvi.Tag = row[" id" ].ToString();
listView1.Items.Add(lvi);
}
}

Перед обновлением метод listUpdate очищает список, вызывая для этого метод listView1.Items.Clear.

Далее в цикле извлекаются все строки из таблицы Contacts. Внутри тела цикла каждая строка таблицы сохраняется в переменной row класса DataRow.

После этого мы создаем новый элемент списка lvi класса ListViewItem, записывая в него имя человека. Фамилия, а также идентификатор записи добавляются в элемент списка при помощи метода lvi.SubItems.Add.

Кроме этого, для каждого элемента списка мы сохраняем в свойстве Tag идентификатор строки таблицы, взятый из столбца id. Этот столбец является первичным ключом таблицы Contacts. Таким образом, каждый элемент списка listView1 хранит всю информацию соответствующей ему строки таблицы Contacts.

Для добавления строки в список мы вызываем метод listView1.Items.Add.

Обновление списка телефонов

Список телефонов listView2 отображает номера только одного человека, имя которого было выделено пользователем в списке контактов listView1. Для решения этой задачи мы создали в классе Form1 метод phonesUpdate:

public void phonesUpdate()
{
listView2.Items.Clear();

string filter =
" idContacts='" + currentContactId.ToString() + " '";

DataRow[] phones = phonesDataTable.Select(filter);

if(phones.Length! = 0)
{
for(int i = 0; i < phones.Length; i++)
{
ListViewItem lvi =
new ListViewItem(phones[i][" Телефон" ].ToString());

lvi.SubItems.Add(phones[i][" id" ].ToString());
lvi.SubItems.Add(phones[i][" idContacts" ].ToString());
lvi.Tag = phones[i][" id" ];
listView2.Items.Add(lvi);
}
}
}

Прежде всего, список телефонов очищается методом listView2.Items.Clear.

Далее наш обработчик должен отобрать в таблице Phones строки, соответствующие телефонам выделенного контакта. Идентификатор этого контакта в таблице Contacts хранится в поле currentContactId.

Отбор строк выполняется с помощью фильтра и метода Select, как это показано ниже:

string filter = " idContacts='" + currentContactId.ToString() + " '";
DataRow[] phones = phonesDataTable.Select(filter);

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

Обратите внимание — мы сохраняем в свойстве Tag элементов списка идентификаторы строк таблицы Phones (т.е. содержимое первичного ключа из столбца id).

Фильтр для метода Select

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

Перегруженные методы Select

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

Если методу Select передается один параметр, то он задает текстовую строку фильтра, содержащую условие отбора записей. Подробнее правила составления такого фильтра мы рассмотрим ниже в этом разделе.

Вариант метода Select с двумя параметрами позволяет дополнительно задать столбец, по которому нужно выполнять сортировку, а также порядок сортировки (прямой или обратный).

Пусть, например, для Интернет-магазина, торгующего книгами, мы создали таблицу покупок Orders. В этой таблице есть столбец seriesID, хранящий идентификатор серии книг (таких как «Шаг за шагом», «Самоучитель» и т.д.), а также столбец Price, в котором хранится стоимость книг.

Следующий фрагмент кода отберет книги, у которых идентификатор серии равен 567, отсортировав его в обратном порядке по стоимости:

DataTable booksTable = DataSet1.Tables[" Orders" ];

string strExpr = " seriesID='567'";
string strSort = " Price DESC";

DataRow[] foundRows = booksTable.Select(strExpr, strSort);

Если не указывать ключевое слово DESC, будет выполнена сортировка в прямом порядке.

Существует и еще один перегруженный вариант метода Select с тремя параметрами. Первый из этих параметров задает фильтр, второй — столбец и порядок сортировки, а третий — состояние отбираемых строк таблицы.

Строки таблицы могут находиться в одном из нескольких состояний, описанных в перечислении DataViewRowState (табл. 8-1).

Таблица 8-1. Перечисление DataViewRowState

Константа Состояние строки таблицы
Added Новая строка
CurrentRows Текущая неизмененная, новая или измененная строка
Deleted Удаленная строка
ModifiedCurrent Текущая версия модифицированной строки
ModifiedOriginal Исходная версия модифицированной строки
None Нет состояния
OriginalRows Исходная или удаленная строка
Unchanged Неизмененная строка

Краткое описание синтаксиса строки фильтра

В этом разделе мы приведем краткое описание синтаксиса строки фильтра. Более подробную информацию Вы найдете в справочной документации.

Выражение для строки фильтра включает в себя имя столбца, оператор отношения и значение. Как мы уже говорили, строка значений должна быть заключена в одинарные кавычки.

Если в имени столбца используются специальные символы, их нужно снабжать префиксом в виде обратного слеша, например: \t (символ табуляции), \n (новая строка), \r (перевод каретки).

Вот еще список специальных символов:

~()#\/=> < +-*%& |^'" []

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

Значения

Текстовые значения в операторах отношения необходимо заключать в одинарные кавычки.
Числовые значения указываются без кавычек. Что же касается дат, то их нужно заключать в пару символов #, например:

" ChangeDate > #3/30/62#"

При использовании такого условия будут отобраны строки, содержащие в столбце ChangeDate даты после 30 марта 1962 года.

Операторы

При составлении условия допускается использовать логические операторы AND, OR и NOT. Например:

(AuthorName = 'Иванов' OR BookName = 'Кобол') AND BookPrice > = 20

Для сравнения числовых величин можно использовать следующие операторы:

 <

 >

 < =

 > =

 < >

 =

Последние два оператора из этого списка подходят для работы с текстовыми строками.

Оператор IN позволяет проверить содержимое столбца на принадлежность к заданному списку значений.

С помощью оператора LIKE и символов шаблона * и % можно отбирать строки аналогично тому, как это делается в языке Transact-SQL (имеется в виду параметр LIKE оператора SELECT).

Числовые величины можно складывать, вычитать, умножать и делить, а также находить остаток от деления (выполнять деление по модулю). Для этого используется тот же набор операторов, что и в языке С#:

 + (сложение)

 - (вычитание)

 * (умножение)

 / (деление)

 % (деление по модулю)

Когда оператор + используется с текстовыми строками, он выполняет их слияние (конкатенацию).

Функции

Дополнительно в фильтрах можно использовать функции, имена которых перечислены в табл. 8-2.

Таблица 8-2. Функции для фильтра

Имя Описание
CONVERT Преобразование типов данных в один из типов, предусмотренных на платформе Microsoft.NET Framework
LEN Определение длины текстовой строки
ISNULL Проверка значения на равенство пустому значению
IIF Возврат одного из значений в зависимости от результата вычисления заданного логического выражения
SUBSTRING Извлечение подстроки из текстовой строки

Таким образом, с помощью метода Select можно выполнять довольно сложные запросы к таблицам набора данных DataSet.

Конечно, возможности метода Select ограничены по сравнению с языком SQL. Однако не следует забывать, что набор данных DataSet дается Вам бесплатно вместе со средой исполнения Microsoft.NET Framework. Создавая объекты DataSet в своих приложениях, Вы можете интегрировать их с базами данных без необходимости установки на компьютере сервера SQL или таких систем SQL, как Microsoft Data Engine (MSDE).

Тем не менее, многие приложения должны быть интегрированы с «настоящими» СУБД, такими, например, как Microsoft SQL Server. В следующей главе нашей книги мы рассмотрим методики интеграции приложений C# с сервером Microsoft SQL Server.

Визуальное проектирование приложений C#


А.В. Фролов, Г.В. Фролов

Глава 9. Интеграция с MS SQL Server.. 2

Приложение SQLTestApp. 2

Создание базы данных. 2

Создание таблицы Contacts. 4

Идентификатор для подключения к базе данных. 6

Создание проекта приложения. 10

Добавление адаптера данных SqlDataAdapter 10

Программный код для адаптера и соединения. 16

Создание локального набора DataSet 22

Редактирование содержимого набора DataSet 24

Загрузка набора данных. 24

Сохранение отредактированного набора данных. 25

Парольный доступ к системе. 25

Приложение LoginApp. 26

Таблица Users. 27

Создание проекта приложения. 27

Соединение с базой данных. 27

Запросы SQL. 28

Адаптер SqlDataAdapter 29

Элемент управления DataGrid. 30

Подключение пользователя. 32

Обновление таблицы Users. 36

Хранение дерева в базе данных.. 36

Приложение ArticlesApp. 36

База данных Articles. 37

Таблица Tree. 38

Таблица Documents. 38

Хранимая процедура sp_InsertDocument 38

Хранимая процедура sp_ InsertNode. 39

Хранимая процедура sp_ UpdateDocument 39

Создание проекта приложения ArticlesApp. 39

Соединение с базой данных. 40

Добавление адаптера SqlDataAdapter. 40

Создание набора данных DataSet 41

Добавление контекстного меню.. 41

Создание узла дерева.. 41

Метод AddNode. 43

Диалоговое окно для ввода данных добавляемого узла. 43

Открытие и закрытие соединения с базой данных. 44

Использование хранимых процедур. 44

Параметры хранимых процедур. 44

Запуск хранимой процедуры.. 45

Получение значений выходных параметров. 45

Добавление текста документа. 45

Диалоговая форма редактирования документа. 45

Свойство Title. 45

Свойство Weight 46

Свойство Document 46

Построение дерева. 46

Метод UpdateTree. 46

Метод CreateNodes. 47

Редактирование узла дерева.. 48

Обработчик событий меню Edit 49

Извлечение идентификатора редактируемого узла. 50

Извлечение данных редактируемого узла дерева. 50

Получение текст редактируемой статьи. 50

Извлечение заголовка и веса сортировки. 51

Обновление информации узла в базе данных. 51

Удаление узла дерева.. 52

Отслеживание перемещений по дереву.. 54

 

Глава 9. Интеграция с MS SQL Server

В предыдущей главе нашей книги мы научились работать с компонентами DataSet и DataGtid, с использованием которых можно относительно легко создавать базы данных и отображать их содержимое в формах приложений C#.

Теперь нашей задачей будет научиться интегрировать приложения с сервером Microsoft SQL Server, используя как технологию рассоединенной (disconnected) обработки, так и классическую клиент-серверную технологию. Мы познакомимся с программными компонентами, предусмотренными в Microsoft.NET Framework специально для решения этой задачи. Это так называемые управляемые поставщики (managed providers), реализованные в виде ряда интерфейсов. Мы уже рассказывали о них в разделе «Провайдеры данных для управляемого кода» 8 главы.

В этой главе мы будем работать с провайдером SQL, который обеспечивает прямой доступ с максимальной производительностью к серверу Microsoft SQL Server.

Приложение SQLTestApp

Материал этой главы мы будем изучать на нескольких примерах приложений, первое из которых называется SQLTestApp. В этом приложении мы привяжем локальный набор DataSet к базе данных, расположенной на сервере Microsoft SQL Server. Отображение и редактирование таблицы Contacts, созданной в рамках локального набора DataSet, будет осуществляться с помощью рассмотренного в предыдущей главе элемента управления DataGrid.

Для загрузки содержимого таблицы Contacts из базы данных Microsoft SQL Server, а также для сохранения изменений, сделанных в этой таблице локально, в окне приложения мы создадим кнопки Загрузить и Обновить (рис. 9-1).

Рис. 9-1. Окно приложения SQLTestApp

Создание базы данных

Прежде всего, необходимо создать базу данных на сервере Microsoft SQL Server. Мы полагаем, что Вы предварительно установили сервер Microsoft SQL Server версии 2000 или 7.0 на тот же самый компьютер, где находится Ваше приложение, или на другой компьютер Вашей локальной сети.

Описание процедуры установки и настройки сервера Microsoft SQL Server выходит за рамки нашей книги, однако на эту тему уже издано немало литературы. Тем не менее, мы подробно расскажем о выполнении всех шагов, необходимых для создания баз данных наших приложений.

Итак, запустите программу SQL Server Enterprise Manager (рис. 9-2), которая входит в состав клиентских утилит сервера Microsoft SQL Server. Эти утилиты могут устанавливаться как вместе с сервером SQL, так и на отдельный компьютер.

Рис. 9-2. Утилита SQL Server Enterprise Manager

Последовательно раскройте в левой части окна утилиты SQL Server Enterprise Manager каталоги Microsoft SQL Servers и SQL Server Group, а затем каталоги, расположенные на Вашем сервере SQL. На рис. 9-2 SQL Server называется DR4.

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

Щелкните правой клавишей мыши папку Databases, а затем выберите из контекстного меню строку New Database. На экране появится диалоговое окно, показанное на рис. 9-3.

Рис. 9-3. Создание базы данных PhoneBook

Введите в поле Name строку PhoneBook (название создаваемой базы данных), а затем щелкните кнопку OK. В результате будет создана новая база данных. Раскройте ее папку, как это показано на рис. 9-4.

Рис. 9-4. Содержимое базы данных PhoneBook

Создание таблицы Contacts

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

Чтобы создать таблицу, щелкните правой клавишей мыши строку Tables в раскрытой папке PhoneBook (рис. 9-4), а затем выберите из контекстного меню строку New Table. На экране появится редактор структуры таблицы, показанный на рис. 9-5.

Рис. 9-5. Редактирование структуры таблицы Contacts

Введите в столбце редактора Column Name имена столбцов таблицы Contacts. Столбец id будет использован для хранения уникальных идентификаторов строк, а в столбцах FirstName и LastName будут храниться, соответственно, имена и фамилии людей.

Столбец редактора Data Type определяет тип данных, хранящихся в столбце таблицы. Первый столбец id должен иметь числовой тип int, а два других — текстовый тип с переменной длиной varchar.

В столбце Length укажите размер полей, как это показано на рис. 9-5.

Далее Вам нужно снять отметку с флажков Allow Nulls, так как столбцы нашей таблицы не могут содержать пустых значений.

На следующем этапе необходимо сделать столбец id первичным ключом в создаваемой таблице Contacts. С этой целью щелкните соответствующую строку в окне редактора правой клавишей мыши и затем выберите из контекстного меню строку Set Primary Key. Около строки параметров id появится изображение маленького ключа (рис. 9-6).

Рис. 9-6. Настройка параметров столбца id

Далее, выберите из списка Identity для столбца id значение Yes (как это показано на рис. 9-6). В результате столбец id будет содержать уникальные идентификаторы строк таблицы.

Кроме того, измените значение параметра Identity Seed, задающее начальное значение столбца id, с 1 на 0. Именно такое значение используется по умолчанию для идентификации строк таблиц, хранящихся в наборе данных DataSet.

Отредактировав параметры таблицы, сохраните ее структуру, щелкнув кнопку с изображением дискеты. Эта кнопка находится в левом верхнем углу окна редактора. В результате на экране появится диалоговое окно Choose Name, где Вам нужно будет указать имя таблицы (рис. 9-7). Наша таблица должна называться Contacts.

Рис. 9-7. Сохранение структуры таблицы

Нажмите здесь кнопку OK, а затем закройте окно редактора структуры таблицы.

Ниже мы привели сценарий SQL, который создает нужную нам таблицу Contacts при помощи команд SQL:

CREATE TABLE [dbo].[Contacts] (
[id] [int] IDENTITY (1, 1) NOT NULL,
[FirstName] [varchar] (50) COLLATE Cyrillic_General_CI_AS NULL,
[LastName] [varchar] (50) COLLATE Cyrillic_General_CI_AS NULL
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[Contacts] WITH NOCHECK ADD
CONSTRAINT [PK_Contacts] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
GO

Вы можете использовать этот сценарий для автоматического создания таблицы в базе данных при помощи утилиты Query Analyzer, входящей в состав клиентских утилит сервера Microsoft SQL Server.

Идентификатор для подключения к базе данных

Сервер Microsoft SQL Server содержит развитые средства разграничения доступа пользователей к базам данных, которые мы настоятельно рекомендуем Вам изучить.

Для наших примеров мы создадим идентификатор, при помощи которого приложения будут подключаться к базе данных PhoneBook.

В окне просмотра содержимого базы данных PhoneBook раскройте список пользователей базы данных Users, показанный на рис. 9-8.

Рис. 9-8. Пользователи базы данных PhoneBook

По умолчанию в этом списке есть только один пользователь с идентификатором dbo. Это владелец базы данных (Data Base Owner), который ее создал. Если Вы создавали базу данных, подключившись к серверу с правами администратора, то только администратор будет иметь доступ к базе данных.

Для добавления нового пользователя щелкните строку Users правой клавишей мыши, а затем выберите из контекстного меню строку New Database User. Вы увидите на экране диалоговое окно, показанное на рис. 9-9.

Рис. 9-9. Добавление нового пользователя

Выберите в списке Login name, задающем идентификатор пользователя, строку < new> для создания нового идентификатора. Вы увидите диалоговое окно создания нового идентификатора, показанное на рис. 9-10.

Рис. 9-10. Добавление нового идентификатора

Введите в поле Name строку c_sharp_app. Этот идентификатор будут использовать наши приложения для подключения к базе данных PhoneBook.

Далее Вам необходимо отметить флажок SQL Server Authentication, чтобы использовать сервер SQL для аутентификации (проверки) данного идентификатора. Введите пароль доступа в поле Password.

На последнем шаге выберите в списке Database базу данных PhoneBook, а в списке Language — строку Russian. После аутентификации пользователь (т.е. наше приложение) будет по умолчанию работать с базой данных PhoneBook, используя русские национальные настройки.

Далее раскройте вкладку Database Access (рис. 9-11) для настройки прав доступа пользователя c_sharp_app к базам данных.

Рис. 9-11. Настройка доступа к базе данных

Отметьте флажок базы данных PhoneBook, разрешив доступ пользователя c_sharp_app к этой базе данных, а затем щелкните кнопку OK.

После этого у Вас будет еще раз запрошен пароль, введенный ранее. Используйте здесь тот же самый пароль, что вы указывали в поле Password диалогового окна, показанного на рис. 9-10. Далее закройте окно создания нового пользователя.

Если Вы все сделали правильно, в списке пользователей базы данных появится новая строка (рис. 9-12).

Рис. 9-12. Добавлен новый пользователь

На следующем этапе Вы должны задать права доступа пользователя c_sharp_app к таблице Contacts. Для этого щелкните имя таблицы в списке таблиц базы данных PhoneBook (рис. 9-13), а затем выберите из контекстного меню строку Properties.

Рис. 9-13. Таблицы нашей базы данных

На экране появится диалоговое окно свойств таблицы Contacts, в которой Вам нужно будет щелкнуть кнопку Permissions. На экране появится окно с вкладкой Permissions, где Вы сможете задать права доступа пользователя по выполнению отдельных операций с таблицей Contacts (рис. 9-14).

Рис. 9-14. Настройка прав доступа к таблице Contacts

Отметьте в этом окне флажки SELECT, INSERT, UPDATE и DELETE, разрешив пользователю c_sharp_app выполнение операций извлечения, вставки обновления и удаления строк, соответственно.

Создание проекта приложения

После создания базы данных PhoneBook Вам нужно создать новое приложение с именем SQLTestApp, пользуясь для этого мастером проектов.

Добавление адаптера данных SqlDataAdapter

Чтобы обеспечить связь между таблицей локального набора данных DataSet и базой данных, размещенной на сервере Microsoft SQL Server, нам нужно добавить в проект приложения программный компонент адаптера данных SqlDataAdapter.

Методы Fill и Update, предусмотренные в классе SqlDataAdapter, выполняют, соответственно, прямую и обратную передачу данных между набором DataSet и таблицей, хранящейся в базе данных сервера SQL.

При этом метод Fill наполняет набор DataSet данными из сервера SQL, а метод Update обновляет базу сервера SQL данными из локального набора DataSet. Для передачи данных используются соответствующие строки, составленные на языке Transact-SQL.

Когда компонент SqlDataAdapter используется для доступа к серверу Microsoft SQL Server, то вместе с ним применяются компоненты SqlConnection и SqlCommand. Первый из них обеспечивает подключение к серверу SQL, а второй — выполнение команд SQL.

В компоненте SqlDataAdapter имеются также свойства SelectCommand, InsertCommand, DeleteCommand, UpdateCommand и TableMappings, нужные в процессе загрузки и обновления данных.

Нам нужно добавить в наше приложение адаптер SqlDataAdapter, перетащив его значок в окно формы из вкладки Data инструментальной панели Toolbox системы разработки приложений Microsoft visual Studio.NET (рис. 9-15).

Рис. 9-15. Значок адаптера SqlDataAdapter

Как только Вы это сделаете, на экране появится первое окно мастера конфигурирования адаптера данных (рис. 9-16).

Рис. 9-16. Мастер конфигурирования адаптера данных

Щелкните в этом окне кнопку Next для продолжения работы мастера конфигурирования.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.