Pascal Data Objects

constructor TPDO.create;

Instanciates the PDO object. Normally it would be desirable for the database connection to persist the entire time the program is running. In that case, a permanent global variable established at initialization of a unit is desirable. In fact, I like to make a global statement and fetch structures for reuse, like this:

unit dbUnit;

interface

{$I PDO/PDOjrm.inc}

{these driver units aren't needed directly, but I put them here to force the libraries
to open BEFORE the db variable is initialized.  Otherwise the libraries are
removed before the db variable is freed, causing a runtime 216 error}

uses PDO, PDOStatement, myLogListener, sysUtils
{$IFDEF MYSQL41DRIVER}
, PDOPlainMySql41
{$ENDIF}
{$IFDEF MYSQL50DRIVER}
, PDOPlainMySql50
{$ENDIF}
;

var
    db: TPDO;
    row: TPDORowNative;
    rowset: TPDORowSetNative;
    rowKeyPair: TPDORowKeyStrings;
    rowsetKeyPair: TPDORowSetKeyStrings;
    DatabaseLogListener: TMavLogListener;
    stmt: IPDOStatement;
    selectSQL: PDO_selectRecord;

implementation

initialization
    DatabaseLogListener := TMavLogListener.Create;
    db            := TPDO.Create;
    row           := TPDORowNative.Create;
    rowset        := TPDORowSetNative.Create;
    rowKeyPair    := TPDORowKeyStrings.Create;
    rowsetKeyPair := TPDORowSetKeyStrings.Create;


finalization
    rowsetKeyPair.Free;
    rowKeyPair.Free;
    rowset.Free;
    row.Free;

    db.Free;
    DatabaseLogListener.Free;
end.

Obviously you can create and free database objects as often as you like.