Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Server Explorer




Объекты DBConnection и DBCommand

DataAdapter

Строки (объект DataRow)

Объекты DataRelation

Таблицы и поля (объекты DataTable и DataColumn)

Источник данных DataSet

Основным объектом ADO является источник данных, представленный объектом DataSet. DataSet состоит из объектов типа DataTable и объектов DataRelation. В коде к ним можно обращаться как к свойствам объекта DataSet, то есть, используя точечную нотацию. Свойство Tables возвращает объект типа DataTableCollection, который содержит все объекты DataTable используемой базы данных.

Объекты DataTable используются для представления одной из таблиц базы данных в DataSet. В свою очередь, DataTable составляется из объектов DataColumn.

DataColumn - это блок для создания схемы DataTable. Каждый объект DataColumn имеет свойство DataType, которое определяет тип данных, содержащихся в каждом объекте DataColumn. Например, можно ограничить тип данных до целых, строковых и десятичных чисел. Поскольку данные, содержащиеся в DataTable, обычно переносятся обратно в исходный источник данных, необходимо согласовывать тип данных с источником.

Объект DataSet имеет также свойство Relations, возвращающее коллекцию DataRelationCollection, которая в свою очередь состоит из объектов DataRelation. Каждый объект DataRelation выражает отношение между двумя таблицами (сами таблицы связаны по какому-либо полю (столбцу)). Следовательно, эта связь осуществляется через объект DataColumn.

Коллекция Rows объекта DataTable возвращает набор строк (записей) заданной таблицы. Эта коллекция используется для изучения результатов запроса к базе данных. Мы можем обращаться к записям таблицы как к элементам простого массива.

DataSet - это специализированный объект, содержащий образ базы данных. Для осуществления взаимодействия между DataSet и собственно источником данных используется объект типа DataAdapter. Само название этого объекта - адаптер, преобразователь, - указывает на его природу. DataAdapter содержит метод Fill() для обновления данных из базы и заполнения DataSet.

Объект DBConnection осуществляет связь с источником данных. Эта связь может быть одновременно использована несколькими командными объектами. Объект DBCommand позволяет послать базе данных команду (как правило, команду SQL или хранимую процедуру). Объекты DBConnection и DBCommand иногда создаются неявно в момент создания объекта DataSet, но их также можно создавать явным образом.

В состав Visual Studio 2008 входит замечательный инструмент управления и обзора подключениями к базам данных - «Обозреватель баз данных» («Server Explorer»).

Создадим новый проект. Выберем в меню «Вид» (View) пункт «Обозреватель баз данных» («Server Explorer»). Появится окно «Обозреватель баз данных» («Server Explorer»). Щелкнем на «Подключения данных» («Data Connections») правой кнопкой мыши и выберем пункт «Добавить подключение» («Add Connection») (рис. 57).

Рис. 57. Добавление соединения

Появляется окно мастера создания соединения, который был рассмотрен выше (п. 3.1. рис. 43, 44). Создадим подключение к базе данных туристической фирмы. После создания соединение появляется в списке всех подключений (рис. 58). На рисунке 58 показаны все таблицы, существующие в базе данных.

Рис. 58. В окне Server Explorer выводятся все подключения к базам данных

Также можно использовать окно «Обозреватель баз данных» («Server Explorer») для быстрого просмотра содержимого баз данных и - если подключение было создано с правами администратора - изменения их. Откроем нужную таблицу и в выпадающем меню выберем пункт «Загрузить данные» («Retrieve Data») (рис. 59).

Рис. 59. Просмотр таблицы «Туры»

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

 

12. 3.4. Пример создания приложения БД "вручную"

Создадим в параллель два приложения для работы с созданными ранее базами данных, аналогичные приложению, рассмотренному выше (см. п. 3.1). Работа будет проводиться, соответственно, со следующими таблицами:

- Microsoft Access - BDTur_firm.mdb (см. п. 1.3);

- Microsoft SQL - BDTur_firmSQL.mdf (см. п. 1.4).

Начнем с запуска Visual Studio 2008 и создания нового проекта Windows Application.

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

- для MS Access - using System.Data.OleDb;

- для MS SQL - using System.Data.SqlClient;

В любом случае необходимо подключить пространство имен System.Data.

В конструкторе формы после InitializeComponent создаем объект DataAdapter.

В приложении, работающем с MS Access, соответствующий код будет выглядеть следующим образом:

public Form1() {
//
// Required for Windows Form Designer support
//
InitializeComponent();
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(CommandText, ConnectionString);
}

А в приложении, работающем с MS SQL:

public Form1() {
//
// Required for Windows Form Designer support
//
InitializeComponent();
SqlDataAdapter dataAdapter = new SqlDataAdapter(CommandText, ConnectionString);
}

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

В качестве параметров DataAdapter передаются CommandText и ConnectionString. Переменная типа string CommandText представляет собой обычный SQL-запрос на выборку из таблицы «Туристы», а переменная типа ConnectionString - это так называемая строка подключения, в которой указываются расположение базы данных, ее название, параметры авторизации и пр.

Воспользуемся следующими строками подключения и командами:

// MS Access
CommandText: "SELECT [Код туриста], Фамилия, Имя, Отчество FROM Туристы";
ConnectionString: "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="D:\ВМИ\For ADO\ BDTur_firm.mdb"
// MS SQL:
CommandText: "SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax FROM Customers"
ConnectionString: "Data Source=.\SQLEXPRESS;AttachDbFilename="D:\ВМИ\For ADO\ BDTur_firmSQL.mdf';
Integrated Security=True;Connect Timeout=30;User Instance=True"

Обратите внимание на названия переменных CommandText и ConnectionString. Когда создается объект DataAdapter, в качестве параметров можно передать названия строк, таких как cmdText и conString, или даже cmt и cns - совершенно равноправно, не забыв, конечно же, назвать также эти переменные в классе Forml. Но сама среда Visual Studio 2008 генерирует эти строки именно с такими названиями - CommandText и ConnectionString, поэтому такое название переменных облегчает поддержку и сопровождение разработанного программного продукта.

Продолжим создание программы. Дальнейший код одинаков для обоих вариантов.

Создаем объект

DataSet: DataSet ds = new DataSet();

Заполняем таблицу «Туристы» объекта ds данными из базы:

dataAdapter.Fill(ds, "Туристы");

Связываем источник данных объекта dataGridView1 с таблицей «Туристы» объекта ds:

dataGrid1.DataSource = ds.Tables["Туристы"].DefaultView;

Теперь запустим созданное приложение. Если все сделано правильно, то на экранной форме отобразится содержимое таблицы «Туристы».

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

dataAdapter.Fill(ds, "Туристы2");

dataGridView1.DataSource = ds.Tables["Туристы2"].DefaultView; Таблицы «Туристы2» в БД нет, однако код по-прежнему работает. Это связано с тем, что таблица, которую мы называем «Туристы», при вызове метода Fill объекта dataAdapter может быть названа как угодно - ее содержимое будет представлять собой извлекаемую таблицу из базы данных. При указании источника данных (DataSource) для объекта dataGridView1 мы ссылаемся именно на таблицу «Туристы», которая была создана при вызове метода Fill. Таким образом, при заполнении таблиц их можно называть произвольным образом. Однако для реальных проектов рекомендуется использовать настоящие названия таблиц, чтобы избежать путаницы и трудностей в сопровождении.




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 1879; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.