Contents Index Structure of embedded SQL programs Building NetWare Loadable Modules

ASA Programming Guide
  Embedded SQL Programming
    Introduction

Loading the interface library dynamically


The usual practice for developing applications that use functions from DLLs is to link the application against an import library, which contains the required function definitions.

This section describes an alternative to using an import library for developing Adaptive Server Anywhere applications. The Adaptive Server Anywhere interface library can be loaded dynamically, without having to link against the import library, using the esqldll.c module in the src subdirectory of your installation directory. Using esqldll.c is recommended because it is easier to use and more robust in its ability to locate the interface DLL.

To load the interface DLL dynamically

  1. Your program must call db_init_dll to load the DLL, and must call db_fini_dll to free the DLL. The db_init_dll call must be before any function in the database interface, and no function in the interface can be called after db_fini_dll.

    You must still call the db_init and db_fini library functions.

  2. You must #include the esqldll.h header file before the EXEC SQL INCLUDE SQLCA statement or #include <sqlca.h> line in your embedded SQL program.

  3. A SQL OS macro must be defined. The header file sqlca.h, which is included by esqdll.c, attempts to determine the appropriate macro and define it. However, certain combinations of platforms and compilers may cause this to fail. In this case, you must add a #define to the top of this file, or make the definition using a compiler option.

    Macro Platforms
    _SQL_OS_WINNT All Windows operating systems
    _SQL_OS_UNIX UNIX
    _SQL_OS_NETWARE NetWare
  4. Compile esqldll.c.

  5. Instead of linking against the imports library, link the object module esqldll.obj with your embedded SQL application objects.

Sample 

You can find a sample program illustrating how to load the interface library dynamically in the Samples\ASA\ESQLDynamicLoad subdirectory of your SQL Anywhere directory. The source code is in Samples\ASA\ESQLDynamicLoad\sample.sqc.


Contents Index Structure of embedded SQL programs Building NetWare Loadable Modules