Управляемые провайдеры ADO.NET

advertisement
Управляемые
провайдеры ADO.NET
Подключение к базам данных
Управляемый провайдер
OLE DB
Провайдер OLE DB реализуется при помощи типов,
определенных в пространстве имен System.Data.OleDb.
Провайдер OleDb позволяет нам обращаться к данным,
расположенным в любом хранилище, к которому можно
подключиться по протоколу OLE DB. Таким образом,
аналогично классическому ADO, вы можете использовать в
ADO.NET управляемый провайдер OLE DB для доступа,
например, к базам данных SQL Server, MS Access и Oracle.
Однако поскольку при этом типы из пространства имен System.
Data. OleDb должны взаимодействовать с обычным (не .NET)
кодом драйверов OLE DB, то при таком обращении будет
производиться множество преобразований вызовов .NET в
вызовы СОМ, что в некоторых ситуациях может привести к
падению производительности.
Наиболее важные типы пространства имен
System.Data.OleDb
Таблица 13.12.
Тип
Описание
OleDbCommand Представляет запрос SQL, производимый к источнику данных
OleDbConnection Представляет открытое соединение с источником данных
OleDbDataAdapter
Представляет соединение с базой данных и набор команд,
используемых для заполнения объекта DataSet, а также
обновления исходной базы данных после внесения изменений
в DataSet
OleDbDataReader Обеспечивает метод считывания потока данных из источника
в одном направлении (вперед)
OleDbErrorCollection OleDbErrorCollection представляет набор ошибок и предупреждений,
OleDbError
возвращаемых источником данных. Сами эти ошибки
OleDbException и предупреждения представлены объектами OleDbError.
При возникновении ошибки может быть сгенерировано
исключение, представленное объектом OleDbException
OleDbParameterCollection Используются для передачи параметров процедуре, хранимой
OleDbParameter на источнике данных. Параметры представлены объектами
OleDbParameter, весь набор — объектом OleDbParameterCollection
Установление соединения при помощи
типа OleDbConnection
// Первый шаг: устанавливаем соединение
OleDbConnection cn = new OleDbConnection();
cn.ConnectionString = "Provider=SQLOLEDB.1;" +
"Integrated Security=SSPI;" +
"Persist Security Info=False;" +
"Initial Catalog=Kontora;" +
"Data Source=HOME-1E51FF62F3;";
cn.Open();
// Выполняем различные операции
cn.Close();
Data Source — это имя компьютера, с которым мы устанавливаем
соединение.
Initial Catalog — имя базы данных, к которой мы подключаемся (в
нашем случае Kontora).
Provider — это имя провайдера OLE DB, который будет
использован для обращения к источнику данных.
Установление соединения при помощи
типа OleDbConnection
Таблица 13.13. Наиболее часто используемые провайдеры
OLE DB
Microsoft.JET.OLEDB.4.0 Этот провайдер OLE DB
используется для подключения к базам данных JET 9, то
есть Access)
MSDAORA Для подключения к базам данных Oracle
SQLOLEDB Для подключения к базам данных MS SQL Server
Члены класса OleDbConnection
Таблица 13.14.
BegiriTransaction() Используются для того, чтобы программным образом начать
CommitTransacton() транзакцию, завершить ее или отменить
RollbackTransaction()
Close()
Закрывает соединение с источником данных (наиболее рекомендуемый
способ)
ConnectionString Позволяет настроить строку подключения при установлении соединения
или получить ее содержание
ConnectonTimeout Позволяет получить или установить время тайм-аута при
установке соединения
Database
Позволяет получить или установить название текущей базы данных
во время подключения
DataSource
Позволяет получить или установить имя источника данных
Ореn()
Открывает соединение с базой данных, используя текущие настройки
свойств соединения
Provider
Позволяет получить или установить имя провайдера
State
Позволяет получить информацию о текущем состоянии соединения
Построение команды SQL
Объектно-ориентированным представлением запроса на языке SQL в
ADO.NET является класс OleDbCommand. Сам текст команды
определяется через свойство OleDbCommand.CormandText.
// Второй шаг: создаем команду SQL
// Первый вариант выполнения SQL-запроса
string strSQL1 = "Select * from k_firm":
OleDbCommand myCommand = new OleDbCommand(strSQL1, cn);
// Второй вариант выполнения SQL-запроса
string strSQL2 = "Select * from k_firm";
OleDbCommand myCommand2 = new OleDbCommand():
myCommand2.Connection = cn;
myConmand2.CommandText = strSQL2;
Члены класса OleDbCommand
Таблица 13.15.
Cancel()
Прекращает выполнение команды
CommandText Позволяет получить или задать текст запроса на языке
SQL
(возможно, с особенностями диалекта, определяемыми типом источника
данных), который будет передан источнику данных
CommandTimeout
Позволяет получить время тайм-аута при выполнении
команды. По умолчанию это время равно 30 секундам
CommandType Позволяет получить или установить значение, определяющее, как
именно будет интерпретирован текст запроса, заданный через свойство.
Connection
Позволяет получить ссылку на объект OleDbConnection, для
которого используется данный объект OleDbCommand
ExecuteReader()
Возвращает объект OleDbDataReader
Parameters
Возвращает коллекцию параметров OleDbParameterCollection
Prepare()
Готовит команду к выполнению (например, она будет
откомпилирована) на источнике данных
Работа с OleDbDataReader
Этот класс представляет однонаправленный (только вперед),
доступный только для чтения поток данных, который за один раз
возвращает одну строку в ответ на запрос SQL.
// Третий шаг: получаем объект OleDbDataReader при помощи метода
ExecuteReader()
OleDbDataReader myDataReader;
myDataReader = myCommand.ExecuteReader();
Работа с OleDbDataReader
// Четвертый шаг: проходим циклом по всем возвращаемым данным
while (myDataReader.Read())
{
Console.WriteLine("Фирма: " +
myDataReader["firm_name"].ToString());
}
myDataReader.Close():
using System;
using System.Data.OleDb;
namespace ConsoleApplication6
{
class Class1
{
static void Main(string[] args)
{
// Первый шаг: устанавливаем соединение
OleDbConnection cn = new OleDbConnection();
cn.ConnectionString = "Provider=SQLOLEDB.1;" +
"Integrated Security=SSPI;" +
"Persist Security Info=False;" +
"Initial Catalog=Kontora;" +
"Data Source=HOME-1E51FF62F3;";
cn.Open();
// Второй шаг: создаем команду SQL
string strSQL = "SELECT * FROM k_firm";
OleDbCommand myCommand = new OleDbCommand(strSQL, cn);
// Третий шаг: получаем объект OleDbDataReader при помощи метода ExecuteReader()
OleDbDataReader myDataReader;
myDataReader = myCommand.ExecuteReader();
// Четвертый шаг: проходим циклом по всем возращаемым данным
while (myDataReader.Read())
{
Console.WriteLine("Фирма: " + myDataReader["firm_name"].ToString());
}
myDataReader.Close();
cn.Close();
}
}
Подключение к базе данных Access
OleDbConnection cn = new OleDbConnection();
cn.ConnectionString =
"Provider=Microsoft.JET.OLEDB.4.0.;" +
@"Data Source=D:\book.mdb;";
Download