The processing required by the application is essentially independent of the DBMS. For example, if you have written programs to access dBase files using ODBC, then you can use similar programs to access Paradox, or indeed any other DBMS.

The application, and the driver programs that access the DBMS, are physically separate. To access a DBMS, you need only ensure a driver for that DBMS is available. There are ODBC drivers for virtually all commercial DBMS, and J itself is distributed with drivers for several popular systems, including Access, Btrieve, dBase, Excel, FoxPro, Oracle, Paradox and SQL Server.

Note that the DBMS need not itself support SQL, for example dBase does not. All that matters is that the ODBC DBMS driver is available.

An ODBC DBMS driver, together with information on where its datasets are stored, is typically referred to as a data source.

Between the application and the data there are 3 layers, though they appear to the application as a single unit:

J application

Data Driver

ODBC Manager

Data Source

Data Source

Data Source

Data

Data

Data

The application sends requests to the Data Driver (using the verbs defined in script dd.ijs), which converts them into a standard format and sends them to the ODBC Manager. The ODBC Manager then sends them to the appropriate Data Source, and is also responsible for ensuring the required drivers are loaded. The Data Source drivers then handle the data access.