Hmmmmm 

I am currently using dbGo configured for ADO (Jet 4.0 OLE DB
Provider).  For Delphi 2005 enterprise, is there a better set of
components to use for ODBC, or should I just pick the dbGo ODBC driver
(OLE DB Provider for ODBC Drivers) to make the connection?  By using
the dbGo components, am I using ADO to connect via ODBC drivers adding
an extra layer there?

My ignorance on this topic is appalling, frankly...

jamie

--- In [email protected], "Glenn B. Lawler" <[EMAIL PROTECTED]> wrote:
>
> >> When I started programming about 15 years ago, the conventional
wisdom
> >> was to use middleware that would let you connect to different
> >> databases without changing your code - ODBC comes to mind.  Nowadays,
> 
> >IMO, ODBC is still the way to go.  But I don't use Delphi very often 
> >(I'm a C++ guy).  If for no other reason, you have a decent chance of 
> >being able to port your applications to other platforms besides
Windows 
> >(e.g. Mac OSX) with minimal effort.  Every major RDBMS vendor has ODBC 
> >drivers for multiple platforms.
> 
> I agree with ODBC. Some regard ODBC (Open DataBase Connectivity) as a
> Microsoft technology, but are usually unaware that ODBC is actually an
> implementation of a standards-based technology: X-Open CLI (Call
Level Interface).
> 
> >ODBC/ADO/etc. introduces a few layers of management between your app. 
> >and the raw APIs.  For the most part, this is fine.  But it really 
> >depends on what you plan on doing.
> 
> I would qualify that by mentioning that what you say was largely the
> case many years ago when ODBC was first introduced but for the
> most part is no longer the case.
> 
> ODBC because so popular as an interface to RDBMS backends that
> vendors rushed to write ODBC drivers. The simplest and quickest
> way to write an ODBC driver is to write it as a translator between the
> ODBC API and the native API of the backend. Today, a great many
> RDBMS vendors have "single tier" ODBC drivers. One that we use a
> great deal is Microsoft SQL Server, which has had a single tier
> ODBC driver ever since version 6.5. I attended a Microsoft developer
> conference where Microsoft advised developers to write to ODBC
> instead of DB-LIB (the old native SQL Server API) for performance
> reasons. They claimed that their single tier ODBC driver would
> perform "at least" as well as DB-LIB, and in some cases would
> perform better. We have done extensive benchmarking that proves
> this to be true.
> 
> There is another aspect to ODBC many do not know about; that is
> ODBC escapes. There are a number of things about the SQL
> language that are non-standard across RDBMS platforms. For
> example, dates. While most high-end backends automatically
> convert string literals to dates, a lot do not. Some require special
> syntax to delimit dates. For example, MS Access requires that
> you delimit literal dates with pound signs (#). In ODBC, you can
> do this:
> 
> SELECT * FROM MyTable
> WHERE MyDateColumn >= {d '2007-01-01'}
> 
> The curly braces ({}) are used to delimit an ODBC escape sequence.
> The driver manufacture is required to handle these escapes in a
> consistent way. So, when you use ODBC, you not only are able
> to _connect_ to any RDBMS with an ODBC driver, you may very
> well be able to use ODBC escapes to make your SQL code portable
> as well.
> 
> Glenn Lawler
> www.incodesystems.com
> 
> 
> -----Original Message-----
> From: Thomas Hruska [SMTP:[EMAIL PROTECTED]
> Sent: Tuesday, May 01, 2007 12:25 PM
> To:   [email protected]
> Subject:      Re: [delphi-en] Database Connectivity
> 
> Jamie L. Mitchell wrote:
> > When I started programming about 15 years ago, the conventional wisdom
> > was to use middleware that would let you connect to different
> > databases without changing your code - ODBC comes to mind.  Nowadays,
> > ADO seems to be the answer.  However, is the conventional wisdom still
> > the way to go?
> > 
> > My application is currently scheduled to work with MS Access type MDB
> > files and MS SQL Server.  Therefore, I have been developing it using
> > ADO; that means, in Delphi 2005, using the dbGo components.
> > 
> > I am wondering if there is a better solution out there?  I am thinking
> > that I might like to move to Oracle or SQL Anywhere, or any other DBMS
> > that might be in use.  Is ADO my best solution?  I don't mind minor
> > mods to the source code but I really don't want completely separate
> > applications.
> > 
> > I know this might be a religious question...I am not trying to bring
> > on a war, just wondering what you out there think on the subject.
> > 
> > Thanks for playing...
> > jamie
> 
> IMO, ODBC is still the way to go.  But I don't use Delphi very often 
> (I'm a C++ guy).  If for no other reason, you have a decent chance of 
> being able to port your applications to other platforms besides Windows 
> (e.g. Mac OSX) with minimal effort.  Every major RDBMS vendor has ODBC 
> drivers for multiple platforms.
> 
> It also depends on the application.  If you need performance,
nothing is 
> going to be faster than the database's own raw API interface.  The 
> downside is that it ties your application to a single RDBMS.  The
upside 
> is you can run a few hundred-thousand queries in a short amount of time.
> 
> ODBC/ADO/etc. introduces a few layers of management between your app. 
> and the raw APIs.  For the most part, this is fine.  But it really 
> depends on what you plan on doing.
> 
> -- 
> Thomas Hruska
> CubicleSoft President
> Ph: 517-803-4197
>


Reply via email to