In every EasySQL based application may be seen four different layers:
Depending on linkage scheme all four or only first two of that layers may be hard linked into application. Driver and database API may be dynamically linked on demand (and it's recommended).
Application is programmed using EasySQL API without any assumption about what real SQL engine will be used at run-time. It is also not recommended to make any assumptions about exact database name and/or host names, access methods by which database may be found. It is easier to configure it at run-time.
Only thing that application should choose is unique ``name'' by which run-time configuration will be referred (when speaking about EasySQL run-time configuration we will refer to this parameter as ``database name''). This ``name'' have not be really unique - a number of related applications may use the same name to refer to one common data source; then, when you'll decide to move database to another host/platform, only thing you will need to do is to change some lines of configuration in exactly one place without requirement to recompile anything.
Client application need not worry about when to connect to engine. It just declares what ``database'' it will use and sends SQL queries. EasySQL loads appropriate driver (or activates in-core one), checks the state of connection, established connection if it is required and send query to engine.
By default there is also no need to check result codes from EasySQL API - they are always fine because EasySQL retries operations until success (this feature may be switched off, if required).
As mentioned before EasySQL API maintains:
EasySQL API also provides application with some very usable functions - like string conversion and ``printf'' styled SQL queries.
EasySQL drivers are very simple. They doesn't even check their arguments correctness because EasySQL API always provides they with correct ones. All checks and decisions are done in EasySQL API, so driver is only a simple standardized interface layer between real SQL engine API and EasySQL API.
Only SQL engine independent function of driver is to provide EasySQL API with information about which symbols should be escaped when converting strings to SQL format.
Nothing known about real SQL engine to client application (except name and version). Only layer which do know everything about engine's internalities is it's EasySQL driver.