Index of /studiosite/lib/symfony/vendor/creole/drivers/odbc/
Name | Last Modified | Size |
---|---|---|
2009-06-17 15:08 | - | |
2009-06-17 15:12 | - | |
2009-06-17 15:12 | - | |
2025-05-18 05:40 | 7k | |
2009-06-17 15:03 | 7k | |
2009-06-17 15:03 | 11k | |
2009-06-17 15:03 | 3k | |
2009-06-17 15:03 | 8k | |
2009-06-17 15:03 | 7k | |
2009-06-17 15:03 | 6k | |
2009-06-17 15:03 | 3k | |
2009-06-17 15:03 | 7k |
Creole ODBC Bridge Driver
=========================
I. Overview
-----------
In the text below, the word "driver" can get somewhat muddled since there are
two libraries concerned here (Creole & ODBC). So, we'll use the term "bridge
driver" to refer to Creole's ODBC bridge driver, and "ODBC driver" to refer to
an ODBC database driver.
The Creole ODBC Bridge driver provides a solution for databases which
currently have no PHP-native interface. It is currently in an experimental
stage of development. It has been tested with two ODBC drivers (Sequiter's
CodeBase ODBC driver and the MySQL ODBC driver (as a baseline test)). To
use any other ODBC drivers you may need to write your own ODBCAdapter-derived
class (see below).
II. ODBCAdapter
---------------
Because ODBC itself is a database abstraction library, the bridge driver needed
a way of hiding ODBC driver-specific behavior. The solution to this was to
create an adapter layer (akin to how the Propel runtime engine works). Think of
it as a sub-driver for the bridge driver. Any ODBC driver-specific behavior is
handled by an ODBCAdapter-derived class. To use a specific adapter class, you
specify its name via a parameter in the connection string:
odbc://localhost/DSN=CodeBase;?adapter=CodeBase
The string above will load the following file as the adapter to use with the
bridge driver: creole/drivers/odbc/adapters/CodeBaseAdapter.php
Some ODBC drivers are limited in support for various Creole features. The
ODBCAdapter also provides a method for emulation of some of these missing
features:
-The emulatePrepareStmt() method provides a switch for enabling prepared
statement emulation for drivers that do not support (or have trouble with)
prepared statements. This emulation is disabled by default.
-The hasLimitOffset() method provides a switch for enabling LIMIT/OFFSET
emulation for drivers that do not support this. This emulation is enabled
by default. The LIMIT/OFFSET emulation was borrowed from the MSSQL Creole
driver.
-The createResultSet() method provides a switch for enabling cached
result sets. To enable this feature, return an instance of
ODBCCachedResultSet in the createResultSet() method of your ODBCAdapter-
derived class. This can be useful as a workaround for ODBC drivers which
lack support for record count retrieval, reverse/absolute cursor
scrolling, etc. In most cases, result rows are cached on-demand. So if
you only read the first couple rows of a result, then only those rows will
be cached.
-The getIdGenerator() method provides a switch for enabling sequence
emulation. This feature is enabled by default in ODBCAdapter and is
implemented in the ODBCIdGenerator class. The emulation code was inspired
by the PEAR::DB nextID() method. If your database supports sequences or
autoincrement natively, you can return your own IdGenerator-derived class
instead. Check out some of the other Creole drivers for IdGenerator
examples.
III. Incomplete Features
------------------------
-The database metadata classes are not fully tested/complete. Specifically,
the ODBCDatabaseInfo class does not currently set the database name. There
may be other problems as well.
-The Creole CallableStatement class (stored procedures) is not currently
implemented. No immediate plans to do this in the future, but it looks
feasible.
IV. Known Issues
----------------
This driver was developed using the PHP v5.0 final build. During the course
of testing I uncovered several bugs in the php_odbc module. I submitted
patches for these bugs, but have not yet received word that they were
committed (they were just submitted this morning). If you want more details
on the problems I encountered or would like a copy of the patches, please
e-mail me (dlawson@masterytech.com).
Proudly Served by LiteSpeed Web Server at www.hostingaim.com Port 80