I'll take a turn at this :)
>> No. You write your code to work with the ODBC API, a driver allows the
>> ODBC API to work with some other database. The picture basically looks
>> like this:
>> [your code] -> [odbc] -> [MyODBC] -> [MySQL]
> Is the above [MySQL] the server part, or the client part (mysql) that
> will talk to the server part of MySQL ?
Database drivers make it possible for clients to talk to servers,
so the mysql in this case is the server. Imagine that you wanted to
create your own client that emulated the mysql client which comes
whith the distribution. It's place in above chain would be the
[your code] part.
> Is it correct that [MyODBC] is a driver ?
> Is an API the same as a protocol ?
At a conceptual level I suppose they are, but technically no.
A protocol basically describes how computers talk to each other
on a network. HTTP and FTP are pehaps the most well known examples.
For a more detailed description:
An API describes how one program can make requests from another program.
An example is the Win32 API, which all Windows programs use to some extent
or another to make requests from the Windows OS. Another example would be
the OpenGL API. Let's say a game programmer wants to draw a 3D model on the
screen. He makes the requests of the OpenGL implementation on his system.
Let's further say that his system has an old graphics card with no 3D
acceleration. His OpenGL implementation is software based. All of the
calculations are done on the CPU. Now let's say Joe User buys this game.
His system has a high end 3D graphics card. The program makes the same
calls to the OpenGL implementation, but on Joe's system OpenGL passes
the processing off to the graphics card.
So APIs describe how requests should be made, but they can be implemented
differently on different platforms.
> If I understood evrything correct than my picture looks now like this:
> [your code/Application/OpenOffice etc.] -> [odbc/API/client side] ->
> [MyODBC/driver/client side] -> [MySQL/(client or server part ??)]
Replace that (client or server part ??) question with 'server' and you've
> How would the picture above change when I would want to use the jdbc API
> f.e with OpenOffice and mysql ?
> [OpenOffice] -> [jdbc] ->[MyJDBC]-> [MySQL] ??