The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

DBD::ADO

Version

Version 0.03.

At the time of this writing, the DBD::ADO driver even ADO itself are relatively new. Things are bound to change, so be sure to read the latest documentation.

Author and Contact Details

The driver maintainer is Phlip Plumlee. He can be contacted via the dbi-users mailing list.

Supported Database Versions and Options

The DBD::ADO module requires Microsoft ADO version 2.1 or later to work reliably. Using NT with Service Pack 4 is recommended. The module is pure Perl, making use of the Win32::OLE module to handle the ADO requests.

The DBD::ADO module supports SQL statements into anything your raw ADO supports. This can include the Jet data drivers for the various Microsoft Office file formats, any number of ODBC data drivers, or experimental data providers that expose file system folder heirarchies or Internet directory services as data sources.

Each provider system variously supports SQL, either in a native format like MS-SQL Server's Transact SQL or as an emulation layer in the data provider, such as a Jet data driver reading an Excel spreadsheet.

Connect Syntax

The DBI->connect() Data Source Name, or DSN has the following format:

  dbi:ADO:DSN

Where DSN must be an ODBC Data Source Name registered with the Control Panel ODBC Data Sources applet. If your DBI application runs as a service, or daemon, the DSN must appear on the "System DSN" tab. A CGI application is the obvious example.

There are no driver specific attributes for the DBI->connect() method.

Numeric Data Handling

The numeric, string, and date data types depend on the interaction of four forces: What a Perl "scalar" supports, how the Win32::OLE layer translates VARIANTs into scalars, the types that VARIANT itself permits, and the types your target provider emits.

A user-programmer must research those forces in their relevant documentation. Rest assured that DBD::ADO will then transmit the type correctly.

String Data Handling

See "Numeric Data Handling" above.

Date Data Handling

See "Numeric Data Handling" above.

LONG/BLOB Data Handling

See "Numeric Data Handling" above.

Other Data Handling issues

The DBD::ADO driver does not yet support the type_info() method.

Transactions, Isolation and Locking

DBD::ADO reflects the capabilities of the native Connection to the user. Transactions, if a provider supports them, are per connection - all statements derived from one connection will ``see'' updates to that data that await a COMMIT statement. Other connections, if a provider supports them, will not see these updates.

ADO supports 4 locking levels. Databases can be very sensitive to the lock typed picked. If you pick the wrong type and then BEGIN a large TRANSACTION, the locking type can escalate up to lock nearly everything. DBD::ADO should expose these levels to the user for tuning, but currently doesn't.

No-Table Expression Select Syntax

Dependent on the data provider associated with the database handle.

Table Join Syntax

Dependent on the data provider associated with the database handle.

Table and Column Names

Dependent on the data provider associated with the database handle.

Case Sensitivity of LIKE Operator

Dependent on the data provider associated with the database handle.

Row ID

Dependent on the data provider associated with the database handle.

Automatic Key or Sequence Generation

Dependent on the data provider associated with the database handle.

Automatic Row Numbering and Row Count Limiting

Dependent on the data provider associated with the database handle.

Parameter Binding

Parameter binding is not yet supported by DBD::ADO.

Unsupported values of the TYPE attribute do not currently generate a warning.

Stored Procedures

Calling stored procedures is not yet supported by DBD::ADO.

Table Metadata

DBD::ADO does not currently support the table_info() method. It awaits the needed slack time and/or other volunteers.

Driver-specific Attributes and Methods

DBD::ADO has no significant driver-specific handle attributes or private methods.

Positioned updates and deletes

DBD::ADO does not support positioned updates or deletes.

Differences from the DBI Specification

DBD::ADO is a very new and currently incomplete driver. It is evolving rapidly though, and since it's written in pure Perl using Win32::OLE, it's easy for people to enhance.

URLs to More Database/Driver Specific Information

Information about ADO can be found at http://www.microsoft.com/data/ado/.

Concurrent use of Multiple Handles

DBD::ADO supports an unlimited number of concurrent data source connections to one or more data sources subject to the limitations of those data sources.

It also supports the preparation and execution of a new statement handle while still fetching data from another statement handle associated with the same database handle. This is also subject to the limitations of the data source.