Home > Delphi > Bling up your database coding

Bling up your database coding

Class helpers can really bling up your database programming. If you like your database management neatly isolated in classes rather than scattered on a form in the shape of components, then this will really make things easier:

type
TFirebirdHelper = class helper for TIBDatabase
public
  function makeQuery(out aQuery:TIBQuery):Boolean;
End;

function TFirebirdHelper.makeQuery(out aQuery:TIBQuery):Boolean;
var
  mQuery:TIBQuery;
begin
  result:=False;
  aQuery:=NIL;

  try
    mQuery:=TIBQuery.Create(NIL);
  except
    //just a stub, you would log at this point
    on exception do;
  end;

  try
    mQuery.Database:=self;
    mQuery.Transaction:=self.transaction;
  except
    //same here, just a stub
    on exception do
    freeAndNil(mQuery);
  end;

  result:=assigned(mQuery);
  if result then
  aQuery:=mQuery;
end;

And you use it with minimal gap between creation and destruction like this, COM style:

 if IBDatabase1.makeQuery(mQuery) then
 begin
   try
     mQuery.sql.add('your sql goes here');
     try
       mQuery.executeSQL;
     except
       //Log and handle errors here
     end;
   finally
     mQuery.free;
   end;
 end;

I use the same technique to isolate common sql stuff like “count of” and “max(field)” and so on.
With enough helpers in place, writing rock solid database wrappers is both fun and easy! And it’s easy to port as well, re-write the core unit and the rest of your app doesnt need to know “where” the data comes from. It only needs to know about TDataset and other abstractions.

Abstract, abstract and abstract

Advertisements
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: