1998-07-29 08:50:04 +02:00
|
|
|
<Chapter Id="odbc">
|
1998-03-01 09:16:16 +01:00
|
|
|
<DocInfo>
|
|
|
|
<AuthorGroup>
|
|
|
|
<Author>
|
|
|
|
<FirstName>Tim</FirstName>
|
|
|
|
<Surname>Goeke</Surname>
|
|
|
|
</Author>
|
|
|
|
</AuthorGroup>
|
|
|
|
<Date>Transcribed 1998-02-12</Date>
|
|
|
|
</DocInfo>
|
|
|
|
|
|
|
|
<Title>ODBC Interface</Title>
|
|
|
|
|
|
|
|
<Para>
|
|
|
|
<Note>
|
|
|
|
<Para>
|
|
|
|
Contributed by <ULink url="mailto:tgoeke@xpressway.com">Tim Goeke</ULink>
|
|
|
|
</Para>
|
|
|
|
</Note>
|
|
|
|
|
|
|
|
<Para>
|
|
|
|
ODBC is an abstract API which allows you to write standard "ODBC" code,
|
|
|
|
using the ODBC API.
|
|
|
|
|
|
|
|
<Sect1>
|
|
|
|
<Title>Background</Title>
|
|
|
|
|
|
|
|
<Para>
|
|
|
|
The ODBC API matches up on the backend to an ODBC compatible data source.
|
|
|
|
This could be anything from a text file to an Oracle RDBMS.
|
|
|
|
|
|
|
|
<Para>
|
|
|
|
The backend access come from ODBC drivers, or vendor specifc drivers that
|
|
|
|
allow data access. PostODBC is such a driver, along with others that are
|
|
|
|
available, such as the OpenLink ODBC drivers.
|
|
|
|
|
|
|
|
<Para>
|
|
|
|
Once you write an ODBC application, you SHOULD be able to connect to ANY
|
|
|
|
back end database, regardless of the vendor, as long as the database schema
|
|
|
|
is the same.
|
|
|
|
|
|
|
|
<Para>
|
|
|
|
For example. you could have MS SQL Server and PostgreSQL servers which have
|
|
|
|
exactly the same data. Using ODBC, your Windows app would make exactly the
|
|
|
|
same calls and the back end data source would look the same (to the windows
|
|
|
|
app).
|
|
|
|
|
|
|
|
<Para>
|
|
|
|
In the real world, differences in drivers and the level of ODBC support
|
|
|
|
lessens the potential of ODBC:
|
|
|
|
|
|
|
|
<SimpleList>
|
|
|
|
<Member>
|
|
|
|
Access, Delphi, and Visual Basic all support ODBC directly.
|
|
|
|
|
|
|
|
<Member>
|
|
|
|
Under C++, such as Visual C++, you can use the C++ ODBC API.
|
|
|
|
|
|
|
|
<Member>
|
|
|
|
In Visual C++, you can use the CRecordSet class, which wraps the ODBC API
|
|
|
|
set within and MFC 4.2 class. This is the easiest route if you are doing
|
|
|
|
Windows C++ development under Windows NT.
|
|
|
|
</SimpleList>
|
|
|
|
|
|
|
|
<Para>
|
|
|
|
If I write an app for PostgreSQL can I write it using ODBC calls
|
|
|
|
to the PostgreSQL server, or is that only when another database program
|
|
|
|
like MS SQL Server or Access needs to access the data?
|
|
|
|
|
|
|
|
<Para>
|
|
|
|
Again, the ODBC API set is the way to go. You can find out more at
|
|
|
|
Microsoft's web site or in your Visual C++ docs (if that's what you are
|
|
|
|
using.)
|
|
|
|
|
|
|
|
<Para>
|
|
|
|
Visual Basic and the other RAD tools have Recordset objects that use ODBC
|
|
|
|
directly to access data. Using the data-aware controls, you can quickly
|
|
|
|
link to the ODBC back end database (<Emphasis>very</Emphasis> quickly).
|
|
|
|
|
|
|
|
<Para>
|
|
|
|
Playing around with MS Access will help you sort this out. Try using
|
|
|
|
File->Get External Data
|
|
|
|
|
|
|
|
<Para>
|
|
|
|
<Tip>
|
|
|
|
<Para>
|
|
|
|
You'll have to set up a DSN first.
|
|
|
|
</Para>
|
|
|
|
</Tip>
|
|
|
|
|
|
|
|
<Para>
|
|
|
|
<Tip>
|
|
|
|
<Para>
|
|
|
|
The PostgreSQL datetime type will break MS Access.
|
|
|
|
</Para>
|
|
|
|
</Tip>
|
|
|
|
|
|
|
|
</Chapter>
|