CHAPTER 21 ADO.NET PART I: THE CONNECTED LAYER
handheld devices, such as Windows Mobile). The ODBC types defined within the System.Data.Odbc
namespace are typically only useful if you need to communicate with a given DBMS for which there is
no custom .NET data provider. This is true because ODBC is a widespread model that provides access to
a number of data stores.
A Word Regarding System.Data.OracleClient.dll
Earlier versions of the .NET platform shipped with an assembly named System.Data.OracleClient.dll,
which as the name suggests, offered a data provider to communicate with Oracle databases. As of .NET
4.0, however, this assembly has been marked as obsolete and will eventually be deprecated.
At first glance, this might cause you to fear that ADO.NET is slowly becoming focused squarely on
Microsoft-centric data stores; however, this is not the case. Oracle provides its own custom .NET
assembly, which follows the same overall design guidelines as the data providers provided by Microsoft.
If you need to obtain this .NET assembly, you can visit the downloads section of Oracle’s web site, found
here:
www.oracle.com/technetwork/indexes/downloads/index.html
Obtaining Third-Party ADO.NET Data Providers
In addition to the data providers that ship from Microsoft (as well as Oracle’s custom .NET library),
numerous third-party data providers exist for various open source and commercial databases. While you
will most likely be able to obtain an ADO.NET data provider directly from the database vendor, you
should be aware of the following site:
www.sqlsummit.com/DataProv.htm
This web site is one of many sites that document each known ADO.NET data provider and provide
links for more information and downloads. Here, you will find numerous ADO.NET providers, including
SQLite, IBM DB2, MySQL, PostgreSQL, TurboDB, Sybase, and many others.
Given the large number of ADO.NET data providers, the examples in this book will use the Microsoft
SQL Server data provider (System.Data.SqlClient.dll). Recall that this provider allows you to
communicate with Microsoft SQL Server version 7.0 and higher, including SQL Server Express Edition. If
you intend to use ADO.NET to interact with another DBMS, you should have no problem doing so once
you understand the material presented in the pages that follow.
Additional ADO.NET Namespaces
In addition to the .NET namespaces that define the types of a specific data provider, the .NET base class
libraries provide a number of additional ADO.NET-centric namespaces, some of which you can see in
Table 21-3 (again, Chapter 23 will address the assemblies and namespaces specific to Entity
Framework).
806