Note: This website is archived. For up-to-date information about D projects and development, please visit

Change Log

Current Trunk

  • version statements added to all providers, so you just build with -version=dbi_mysql, -version=dbi_sqlite, etc
    • buildme.d build support will now be deprecated, use the -version=dbi_provider build syntax instead
  • DSSS support. To build the library for just sqlite, for example, just type:
    • dsss build -version=dbi_sqlite
    • sample dsss.conf included to build a library named 'dbi'
  • Tango logging added, for SQL tracing
    • If you want to see dbi log output, the easiest way is to just import the Configurator in your program, like so:
      • import tango.util.log.Configurator;
  • phobos is being deprecated, tango will be the main supported library
  • you can now foreach over the fields in a Row
  • Registry of service providers added, you can now get a database provider by URL, ala JDBC

Version 0.2.5 - 2007-02-02

  • Tango support added.
    • Tango is now the default standard library.
    • -version=Phobos should be used for Phobos compatibility.
    • Ares support has been removed.
  • buildme.d now puts non-Windows library names in the proper style.
  • Fixed an array bounds exception on null data in OdbcResult?.d.
  • Fixed a problem that sometimes caused the column name to be "" for ODBC.
  • Added some casts around nulls for ODBC.
  • buildme.d no longer fails on linux after a build error.
  • buildme.d uses bud instead of build.
  • MSSQL/Sybase support via FreeTDS - see [44].
  • Statement.d throws a DBIException if a field name is not bound.
  • PostgreSQL retrieves types.
  • All import libraries now give a compile time message if the library name is unknown instead of asserting.
  • MysqlDatabase no longer throws a DBIException on conversion errors.
  • PostgreSQL import header updated from 8.1.4 to 8.2.1.
  • SQLite import header updated from 3.3.7 to 3.3.11.

Version 0.2.4 - 2006-09-20

  • Changed DBIException.getSQL to DBIException.getSql.
  • The file names are now in CamelCase to support case-sensitive systems.
  • Ares is now mostly supported if D DBI is compiled with version=Ares.
    • buildme.d has the supported DBDs hardcoded in.
    • Ares fails its own unittests.
  • debug(UnitTest) is required for the unittests to compile.
  • Changed the database for unittests. See UnitTestDatabase for more information.
  • Added an ODBC unittest.
  • MysqlDatabase will now throw DBIException instead of ConvException on conversion errors.
  • The PostgreSQL error checking code has been fixed.
  • Fixed code that was checking for null using !=.
  • Removed an unnecessary .dup from PgResult.
  • Result.fetchAll is no longer final.

Version 0.2.3 2006-07-18

  • D DBI is now compatible with DMD 0.163.
  • Static import is used, which is incompatible with GDC 0.19.
    • Version 0.2.2 should be used for GDC 0.19 or DMD 0.162 and earlier.

Version 0.2.2 - 2006-07-16

  • The documentation was redone almost from scratch.
    • Row was not redone because it is going to be replaced.
    • All of the native D files are valid XHTML 1.1.
  • odbcDatabase and odbcResult have been renamed to OdbcDatabase and OdbcResult.
  • Database and Result are abstract classes instead of interfaces.
    • BaseDatabase and BaseResult have been removed.
    • BaseDatabase?'s unittests are now done using a dummy class.
  • ErrorCode has a slightly different set of errors.
    • UsernameError, PasswordError, LicenseError, and NoData have been removed.
    • PermissionsError has been added.
    • VersionError is now ProtocolError.
  • Statement uses size_t and ptrdiff_t instead of int.
  • Statement.escape is now private.
  • MysqlResult will no longer try to free a null handle.
  • The SQLite and PostgreSQL DBDs now convert their native errors to ErrorCode.
  • MysqlError was rechecked against the MySQL 5.1 revision 2737 documentation.
  • buildme.d now theoretically supports GDC.
  • Added version (build) pragma(ignore) to every all.d.
  • An untested alpha InterBase C interface has been included.
  • An untested alpha mSQL C interface has been included.
  • An untested alpha Oracle C interface has been included.

Version 0.2.1 - 2006-06-12

  • D DBI now uses the New BSD License instead of the LGPL.
  • ODBC support has been rewritten completely.
    • ODBC Version 3.51 is supported.
    • WindowsAPI is used instead of David L's headers.
  • Imports are now explicitly public.
  • row.d now throws a DBIException if the column name given to it doesn't exist.
  • Override, final, and protected are now used where appropriate.

Version 0.2.0

  • Return types for Database.connect, Database.close, and Database.execute changed to void.
  • Database.getErrorCode and Database.getErrorMessage are deprecated.
    • These will be removed in version 0.3.0
  • Standardized error code (ErrorCode).
  • DBIException extended and used more.
  • New PostgreSQL C Interface.
  • The socket parameter is now accepted in the MySQL driver.
  • Many bug fixes.

Version 0.1.6

  • Changed === and !== for D 0.126
  • Added ODBC support.

Version 0.1.5

  • Fixed type conversion warning in MySQL.
  • Fixed error in the makefile with unittesting.
  • Renamed _test.sql to _test_mysql.sql.
  • SqliteDatabase.d: Fixed hasItem return warning.
  • Made SqliteResult finalize statement only if it has not already been finialized.
  • Added PostgreSQL support.
  • Added _test_* sql scripts for each DBD supported.
  • Updated build system.
  • Added supported database list to README.txt.
  • Added forgotten files.
  • Organized docs a bit better and makefile.

[Version 0.1.4]

  • Fixed a minor bug in SQLite with .dup'n char*'s back from the database.
  • MySQL driver now passes *almost* all unittests. It is safe to use but the type retrieval is not functioning (has been commented out). For instance, you cannot determine if a field is a numeric, varchar or date.
  • Reworked makefiles.
  • Fixed the return conversion from int to byte bug in hasItem() in SqliteDatabase.
  • Fixed various minor bugs.

[Version 0.1.3]

  • Fixed minor source formatting.
  • Added MySQL imp from qbert.
  • Added forgotten files.
  • Added new ChangeLog.

[Version 0.1.2]

  • Fixed a bug that caused fetchAllRows not to function properly.
  • Moved BaseDatabase into it's own module.
  • Added a custom document style sheet.
  • Created a BaseResult class.
  • Moved queryFetchAll from SqliteResult to BaseResult.
  • Fixed bug with Row![] containing pointers to the last Row only.
  • Continuing documentation.
  • Work done on Row.d.
  • Added import wrappers dbi.all and dbi.sqlite.all for ease of client development.
  • Added an examples directory and one example, simple.d


  • Fixed a compile time bug.
  • Added BaseDatabase.d.
  • Updated SqliteDatabase to inherit from BaseDatabase.
  • Made makefile target dist a bit smarter.
  • Added simple documentation to source code.
  • Switched to NaturalDocs.
  • Added some documentation.
  • Added build for doxygen.


  • Initial commit.