Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Создание и инициализация




Объект Command

 

При определении объектов ADO.NET DataAdapter был назван адаптером, преобразователем, предназначенным для взаимодействия с базой данных. Это действительно так, однако если рассматривать взаимодействие с базой данных более глубоко, то выясняется, что в ADO.NET есть специализированный объект для выполнения запросов, называемый Command. Под запросами понимается выполнение SQL-конструкций или запуск хранимых процедур. Этот объект среда создает неявным образом в методе InitializeComponent. Данный объект обладает следующими свойствами.

Connection - подключение к базе данных. Можно использовать как существующее подключение, так и создавать новое.

CommandType - тип команды (запроса), который будет направляться к базе данных. Возможны следующие значения:

- Text. Текстовая команда состоит из SQL-конструкции, направляемой к базе данных. Это значение используется по умолчанию.

- StoredProcedure. Текстовая команда состоит из названия хранимой процедуры.

- TableDirect. Текстовая команда состоит из названия таблицы базы данных. В результате извлекается все содержимое таблицы. Эта команда аналогична текстовой команде SELECT * FROM Название_таблицы. Данная команда поддерживается только управляемым поставщиком OLE DB.

CommandText - собственно сам текст запроса.

Чтобы выполнить запрос, свойству Connection объекта Command следует задать объект - имя созданного объекта Connection:

// создание, инициализация и открытие объекта Connection OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = ConnectionString; // содержание строки см. раздел 4.1
conn.Open();

// создание объекта Command и связывание его с объектом Connection
OleDbCommand myCommand = new OleDbCommand();
myCommand.Connection = conn;

Объект Connection также предоставляет метод CreateCommand, позволяющий упростить данный процесс - этот метод возвращает новый объект Command, уже инициализированный для использования созданного объекта Connection:

OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = ConnectionString;
conn.Open();
OleDbCommand myCommand = conn.CreateCommand();

Эти два способа создания и инициализации объекта Command эквивалентны. Теперь следует определить SQL-запрос, который будет извлекать данные. Как и для строки соединения, будем использовать запрос из предыдущего приложения.

Для хранения текста команды объект myfommand имеет свойство CommandText. Чтобы избежать путаницы, изменим название переменной - CommandText на commandText (с маленькой буквы):

MyCommand.CommandText = commandText;
Создаем объект OleDbDataAdapter:
OleDbDataAdapter dataAdapter = new OleDbDataAdapter();

Объект dataAdapter имеет свойство SelectCommand, в котором мы и будем указывать объект myCommand:

dataAdapter.SelectCommand = myCommand;
Создаем объект DataSet:
DataSet ds = new DataSet();

Заполняем ds данными из dataAdapter:

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

Указываем источник данных DataSource для dataGrid1:

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

Закрываем соединение явным образом:

conn.Close();

Теперь можно запускать приложение. Получим результат, что и на рисунке 60, но теперь управление всеми объектами, работающими с данными, происходит явно.

Полный листинг конструктора формы выглядит так:

public Form1() {
InitializeComponent();
string commandText = "SELECT Фамилия, Имя, Отчество FROM Туристы";
string ConnectionString = @"Provider=MicrosoftJet.OLEDB.4.0; " +
"Data Source=D:\ВМИ\For ADO\BDTur_firm.mdb";
OleDbConnection conn=new OleDbConnection(ConnectionString);
conn.Open();
OleDbCommand MyCommand=new OleDbCommand();
MyCommand.Connection = conn;
//или OleDbCommand MyCommand=conn.CreateCommand();
MyCommand.CommandText = commandText;
OleDbDataAdapter dataAdapter = new OleDbDataAdapter();
dataAdapter.SelectCommand = MyCommand;
DataSet ds = new DataSet();
dataAdapter.Fill(ds, "Туристы");
dataGridView1.DataSource = ds.Tables["Туристы"].DefaultView;
conn.Close();
}

Работа с базой данных SQL аналогична рассмотренному примеру. Отличие заключается в использовании вместо классов OleDbConnection, OleDbCommand, OleDbDataAdapter классов SqlConnection, SqlCommand, SqlDataAdapter соответственно.

Отметим, что оба подхода (визуальный и ручной) к созданию и использованию объектов ADO обладают своими областями применения. Для упрощения разработки и сопровождения визуальных форм проще использовать визуальный подход. При создании приложений, от которых требуется надежность, гибкость или отсутствие экранных форм (например, Web-сервис) лучше создавать объекты ADO вручную.

При визуальном подходе наряду с представлением данных в виде таблицы часто приходится использовать традиционные элементы интерфейса, такие как TextBox, Label и пр. Привязка к элементам интерфейса и средство навигации по записям были рассмотрены выше (см. п. 3.1).




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


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


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



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




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