Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прога - ответы2.docx
Скачиваний:
19
Добавлен:
23.04.2019
Размер:
206.38 Кб
Скачать

Подключенный уровень

Соединение с базами данных обеспечивается за счет так называемых поставщиков данных. Они представлены классами, унаследованными от DbConnection. Примеры поставщиков:

SqlConnection, OracleConnection, OdbcConnection, MySqlConnection.

Рассмотрим взаимодействие с базой данных на примере SqlConnection :

Для выполнения команды базы данных нужно:

  1. Создать, настроить и открыть объект подключения.

  2. Создать и настроить объект команды, указав объект подключения в аргументе конструктора или через свойство Connection.

  3. Для чтения массива записей (например, результата команды SELECT) вызвать метод ExecuteReader() настроенного объекта команды и обрабатывать каждую запись с помощью метода Read() объекта чтения данных.

  4. Для выполнения команды, не предусматривающей возвращение произвольного числа записей, использовать метод ExecuteNonQuery() объекта команды.

Пример:

// Создание подключения

using ( SqlConnection cn = new SqlConnection() )

{

// установка строки подключения

cn.ConnectionString =

@"Data Source=(local)\SQLEXPRESS;Initial Catalog=DataBase1";

// открытие подключения

cn.Open();

// создаем объект команды SQL CREATE

SqlCommand createCommand =

new SqlCommand("CREATE TABLE Table1 (Field1 INTEGER, Field2 INTEGER)");

// выполняем не-Select запрос

createCommand.ExecuteNonQuery();

// создаем объект команды SQL SELECT

SqlCommand myCommand = new SqlCommand("SELECT * FROM Table1", cn);

// получение объекта чтения данных SELECT-запроса и просмотр результатов

using ( SqlDataReader myDataReader = myCommand.ExecuteReader() )

{

while ( myDataReader.Read() )

{

Console.WriteLine("Field1: {0}, Field2: {1}",

myDataReader["Field1"].ToString(),

myDataReader["Field2"].ToString()

);

}

}

// закрытие подключения

cn.Close();

}

Автономный уровень

Автономный уровень предоставляет типы данных, позволяющие эмулировать реляционные данные с помощью модели объектов, находящихся в памяти. Кроме простого моделирования табличных данных, состоящих из строк и столбцов, типы из System.Data позволяют воспроизводить отношения между таблицами, ограничения столбцов, первичные ключи, и другие примитивы баз данных. К смоделированным данным можно применять фильтры, отправлять запросы и сохранять (или загружать) данные в формате XML и двоичном формате. Все это можно делать, даже не подключаясь к СУБД (откуда и термин "автономный уровень") — достаточно загрузить данные из локального XML-файла или программным образом создать объект.

Автономные типы действительно можно использовать без подключения к базе данных, но все-таки обычно применяются подключения и объекты команд. Кроме того, используется и особый объект — адаптер данных (расширяющий абстрактный тип DbDataAdapter), который как раз обеспечивает связь с реальной базой данных. Тип DataSet представляет собой контейнер для любого количества объектов DataTable, каждый из которых содержит коллекцию объектов DataRow и DataColumn.