Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л1_Технология ADO.doc
Скачиваний:
14
Добавлен:
11.07.2019
Размер:
520.7 Кб
Скачать

Компоненты Visual Studio для вывода данных таблицы

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

Компонент DataGridView предназначен для вывода таблицы на форме. Для вывода данных таблицы с помощью компонента DataGridView необходимо использовать класс BindingSource. Оба эти компонента имеют свойство DataSource, которая позволяет взаимосвязать их источником данных. Источником данных является набор данных (таблица), который получен в результате выполнения SELECT-запроса.

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

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

Чтобы программно привязываться к источнику данных, на форме разместим кнопку и напишем для него обработчик события Click.

Ниже приведем код для события Click кнопки.

private void button1_Click(object sender, EventArgs e)

{

// Соединение с базой данных MyBase

string conStr = "Data Source = (local)\\SQLEXPRESS;" +

"Initial Catalog = MyBase;" +

"Integrated Security = True";

SqlConnection conn = new SqlConnection(conStr);

conn.Open();

// Определение SQL-команды

string sqlStr = "SELECT Name, Post, Oklad FROM Person";

SqlCommand cmd = new SqlCommand(sqlStr, conn);

// Создание Адаптера

SqlDataAdapter myAdapter = new SqlDataAdapter(cmd);

//Создание локального набора данных

DataSet myDataSet = new DataSet();

myAdapter.Fill(myDataSet, "Person");

// Вывод данных с помощью DataGridView

DataTable Person = myDataSet.Tables["Person"];

// Привязка источника данных на BindingSorce

BindingSource personBS = new BindingSource();

personBS.DataSource = Person;

// Привязка источника данных на DataGridView

dataGridView1.DataSource = personBS;

conn.Close();

}

Теперь запускайте программу на выполнение.

Как видно из кода программы объекту класса BindingSource привязывается объект класса DataTable. Объекту класса DataGridView привязывается объект класса BindingSource. Эту взаимосвязь покажем схематично.

Создание приложения базы данных в Visual Studio 2005

В предыдущих приложениях мы программно создавали соединение, выполняли SQL-запрос и выводили данных на форме. Выполнение этих работ требует много времени и поэтому среда программирования Visual Studio позволяет автоматически выполнять этих работ.

Как было указано выше, компоненты, предназначенные для работы с базами данных находятся в разделе Данные панели инструментов. Начиная с версии Visual Studio 2005 этот раздел не содержит классов SqlConnection и SqlDataAdapter. Теперь объекты этих классов определяются при установлении соединения с источником данных.

Ниже приведем порядок вывода данных на форме на этапе проектирования внешнего вида формы :

1. Вначале следует подключить необходимые базы данных на проект. Для этого следует выполнить команду Данные/ Добавить новый источник данных. При этом появляется окно:

2. Выберите источник данных типа База данных и нажмите на кнопку Далее. Появляется окно выбора подключенных баз данных:

3. Выберите базу данных MyBase и нажмите на кнопку Далее. Система запрашивает сохранить строку подключения. Нажмите еще раз на кнопку Далее. Появляется окно выбора объектов базы данных MyBase.

4. Установите флажки на необходимых элементах базы данных и нажмите на кнопку Готово. Таким образом, создается набор данных MyBaseDataSet для установления связи с базой данных MyBase.

5. Теперь разместите на форме компонент DataGridView. При этом появляется всплывающая подсказка следующего вида:

В раскрывающем списке выберите таблицу Person источника данных MyBaseDataSet. Теперь на форме появляется пустая таблица Person. Если запустить приложение, то в DataGridView появляется все данные таблицы Person.

При размещении на форме компонента DataGridView, ниже формы появятся три компонента:

Объект personTableAdapter является посредником между удаленной базой данных (таблица Person) и локальной копией базы данных myBaseDataSet. Объект personBindingSource является посредником между локальной копией базы данных myBaseDataSet и визуальным компонентом DataGridView.

Теперь переходите в окно кода приложения. Как видно в окне кода появился обработчик события Form_Load:

private void Form1_Load(object sender, EventArgs e)

{

this.personTableAdapter.Fill(this.myBaseDataSet.Person);

}

Как видно, в этом коде происходит заполнение локальной базы данных с помощью метода Fill() объекта класса Adapter. Вывод данных локальной базы на визуальном компоненте DataGridView происходит автоматически с помощью объекта класса BindingSource.

Безусловно, чтобы эти объекты работали, система Visual Studio автоматически создал код. Чтобы посмотреть этот код переходите в окно Solution Explorer и щелкните на значке “+” узла MyBaseDataSet.xsd. Тогда появятся три объекта этого узла: объект MyBaseDataSet.Designer.cs содержит код реализации классов DataSet, Adapter и BindingSource. Посмотрите этот код, тогда вы поймете, какой квалификации программисты работают в фирме Microsoft.

Заметим, преимущества и недостатки привязки источника данных на DataGridView при проектировании формы.

Единственным преимуществом является то, что не нужно писать программный код.

Недостатками являются следующие:

1. В DataGridView появляются все данные таблицы Person. Попытка найти SQL-запрос в автоматически созданном коде требует больших усилий.

2. Автоматический созданный код содержит около 2500 строк кода. Загрузка и выполнение этого кода требует большой оперативной памяти и ресурсов процессора.

Из сказанного следует, программная привязка источника данных на компонент DataGridView намного проще при разработке собственного приложения.