Получив в свое распоряжение фабрику, вы можете создавать другие объекты, такие как экземпляры Connection и Command, используя для этого методы DbProviderFactory.CreateXxx(). Например, метод CreateConnection() возвращает объект Connection для вашего провайдера данных. И опять же вы должны исходить из того, что не знаете, какой именно провайдер будет использован, поэтому взаимодействовать с объектами, созданными фабрикой, только через стандартизованный базовый класс.
В табл. 7.8 представлено краткое руководство, описывающее методы, которые необходимы для создания объектов доступа к данным каждого типа, и какой базовый класс можно использовать, чтобы безопасно ими манипулировать.
Таблица 7.8. Интерфейсы стандартных объектов ADO.NET
| Тип объекта | Базовый класс | Пример | Метод DbProviderFactory |
|---|---|---|---|
| Connection |
DbConnection |
SqlConnection |
CreateConnection() |
| Command |
DbCommand |
SqlCommand |
CreateCommand() |
| Parameter |
DbDataParameter |
SqlParameter |
CreateParameter() |
| DataReader |
DbDataReader |
SqlDataReader |
CreateDataReader() |
| DataAdapter |
DbDataAdapter |
SqlDataAdapter |
CreateDataAdapter() |
На заметку! Как объяснялось ранее в этой главе, специфичные для провайдера объекты также реализуют определенные интерфейсы (вроде IDbConnection). Однако поскольку некоторые объекты используют более одного интерфейса ADO.NET (например, DataReader реализует как IDataRecord, так и IDataReader), применение базового класса упрощает эту модель.
Чтобы лучше понять, как все это работает вместе, рассмотрим простой пример. В этом разделе вы увидите, как можно выполнить запрос и отобразить результаты, используя независимый от провайдера код. Фактически этот пример представляет собой измененную версию страницы, которую вы видели ранее на рис. 7.3. Единственное отличие в том, что она более не привязана жестко к провайдеру данных SQL Server.
Первый шаг — настроить в файле web.config строку соединения, имя провайдера и текст запроса для примера:
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<connectionStrings>
<add name="Northwind" connectionString=
"Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI"/>
</connectionStrings>
<appSettings>
<add key="factory" value="System.Data.SqlClient" />
<add key="employeeQuery" value="SELECT * FROM Employees" />
предыдущая следующая страница оглавление
334