ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Шрифт:
Упрощенно говоря, поставщик данных – это набор типов, определенных в дан-ном пространстве имен и "понимающих", как общаться с конкретным источником данных. Любой используемый нами поставщик данных определяет набор типов, обеспечивающих базовые функциональные возможности. В табл. 22.1 описаны некоторые базовые объекты, их базовые классы (все они определяются в пространстве имен System.Data.Common) и реализованные в них интерфейсы (они определяются в System.Data).
Таблица 22.1. Базовые объекты поставщика данных ADO.NET
Объект | Базовый Класс | Реализованные интерфейсы | Описание |
---|---|---|---|
Connection | DbConnection | IDbConnection | Обеспечивает
|
Command | DbCommand | IDbCommand | Объект команды. Представляет SQL-запрос или имя хранимой процедуры, а также обеспечивает доступ к о6ъекту чтения данных соответствующего поставщика данных |
DataReader | DbDataReader | IDataReader, IDataRecord | Объект чтения данных. Обеспечивает однонаправленный доступ к данным в режиме "только для чтения" |
DataAdapter | DbDataAdapter | IDataAdapter, IDbDataAdapter | Объект адаптера данных. Обеспечивает обмен объектами DataSet между вызывающей стороной и местом хранения данных. Содержит набор из четырех внутренних объектов команд, используемых для выборки, вставки, обновления и удаления информации из хранилища данных |
Parameter | DbParameter | IDataParameter, IDbDataParameter | Объект параметра. Представляет именованный параметр параметризованного запроса |
Transaction | DbTransaction | IDbTransaction | Объект транзакции. Выполняет транзакцию базы данных |
Хотя имена соответствующих типов для разных поставщиков данных оказываются разными (например, SqlConnection, OracleConnection, OdbcConnection и MySqlConnection), каждый из таких объектов получается из одного и того же базового класса, что предполагает идентичность реализуемых объектами интерфейсов. С учетом этого мы вправе предполагать, что, освоив приемы работы с одним поставщиком данных, освоить остальные поставщики будет совсем просто.
Замечание. В соответствии с соглашением о присваивании имен объекты поставщика данных должны иметь префикс, указывающий имя соответствующей СУБД.
На рис. 22.1 показана общая структура поставщика данных ADO.NET. Заметьте, что в представленной диаграмме элемент Компоновочный блок клиента может обозначать практически любое приложение .NET – консольную программу, приложение Windows Forms, Web-страницу ASP.NET, Web-сервис XML, библиотеку программного кода .NET и т.д.
Конечно, в дополнение к объектам, показанным на рис. 22.1, поставщик данных предлагает и другие типы объектов. Однако указанные на рисунке базовые объекты присущи всем поставщикам данных.
Поставщики данных Microsoft
В дистрибутив Microsoft .NET 2.0 включен ряд поставщиков данных, в частности для Oracle, SQL Server и ODBC. В табл. 22.2 для поставщиков данных Microsoft ADO.NET указаны пространства имен и содержащие их компоновочные блоки.
Замечание. Специального поставщика данных, обращающегося непосредственно к механизму Jet (т.е. к Microsoft Access), нет. Для взаимодействия с файлами данных Access можно использовать поставщик данных OLE DB или ODBC.
Рис 22.1. Поставщики данных ADO.NET обеспечивают
Таблица 22.2. Поставщики данных ADO.NET от Microsoft
Поставщик данных | Пространство имен | Компоновочный блок |
---|---|---|
OLE DB | System.Data.OleDb | System.Data.dll |
Microsoft SQL Server | System.Data.SqlClient | System.Data.dll |
Microsoft SQL Server Mobile | System.Data.SqlServerCe | System.Data.SqlServerCe.dll |
ODBC | System.Data.Odbc | System.Data.dll |
Oracle | System.Data.OracleClient | System.Data.OracleClient.dll |
Поставщик данных OLE DB, который скомпонован из типов, определенных в пространстве имен System.Data.OleDb, позволяет получить доступ к данным любого 'хранилища данных, поддерживающего классический протокол OLE DB на основе COM. С помощью этого поставщика данных можно связаться с любой базой данных OLE DB, просто настроив сегмент Provider строки соединения. При этом, однако, следует учитывать то, что поставщик OLE DB в фоновом режиме взаимодействует с различными объектами COM, а это может влиять на производительность приложения. В общем, поставщик данных OLE DB оказывается полезным только в том случае, когда приходится взаимодействовать с СУБД, не определяющей конкретного поставщика данных .NET.
Поставщик данных Microsoft SQL Server предлагает прямой доступ к хранилищам данных Microsoft SQL Server (версий 7.0 и выше) и только к хранилищам данных SQL Server. Пространство имен System.Data.SqlClient содержит типы, используемые поставщиком данных SQL Server и предлагающие, в основном, те же функциональные возможности, что и поставщик данных OLE DB. Ключевым различием является то. что поставщик данных SQL Server действует в обход уровня OLE DB, а это обеспечивает ряд преимуществ с точки зрения производительности системы. Кроме того, поставщик данных Microsoft SQL Server позволяет получить доступ к некоторым уникальным возможностям данной конкретной СУБД.
Замечание. Если вас интересуют особенности использования пространств имен System.Data.SqlServerCe, System.Data.Odbc или System.Data.Oracle, за подробностями обратитесь к документации .NET Framework 2.0 SDK.
Поставщики данных других производителей
Вдобавок к поставщикам данных, предлагаемым компанией Microsoft, существуют поставщики данных других производителей, предназначенные для самых разных, как свободно доступных, так и коммерческих баз данных. В табл. 22.3 указано, где найти некоторые управляемые поставщики данных, не предлагаемые в комплекте инсталляции Microsoft .NET 2.0 (помните о том, что указанные здесь адреса URL могут измениться).
Таблица 22.3. Поставщики данных ADO.NET разных производителей
Поставщик данных | Адрес web-страницы |
---|---|
Firebird Interbase | http://www.mono-project.com/Firebird_Interbase |
IBM DB2 | http://www-306.ibm.com/software/data/db2 |
MySQL | http://dev.mysql.com/downloads/connector/net/1.0.html |
PostgreSQL | http://www.mono-project.com/PostgreSQL |
Sybase | http://www.mono-project.com/Sybase |