114 lines
3.5 KiB
C++
114 lines
3.5 KiB
C++
|
/*++
|
||
|
|
||
|
Copyright (c) 1995-1996 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
dynodbc.c
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
This module provides functions for dynamically loading the ODBC
|
||
|
functions.
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Murali R. Krishnan (MuraliK) 3-Nov-1995
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#include "precomp.hxx"
|
||
|
|
||
|
#define ODBC_MODULE_NAME "odbc32.dll"
|
||
|
|
||
|
#define LOAD_ENTRY( hMod, Name ) \
|
||
|
( p##Name = ( pfn##Name )GetProcAddress( ( hMod ), #Name ) )
|
||
|
|
||
|
//
|
||
|
// ODBC DLL Entry Points, fill by calling LoadODBC
|
||
|
//
|
||
|
|
||
|
pfnSQLAllocConnect pSQLAllocConnect ;
|
||
|
pfnSQLAllocEnv pSQLAllocEnv ;
|
||
|
pfnSQLAllocStmt pSQLAllocStmt ;
|
||
|
pfnSQLBindCol pSQLBindCol ;
|
||
|
pfnSQLCancel pSQLCancel ;
|
||
|
pfnSQLColAttributes pSQLColAttributes ;
|
||
|
pfnSQLConnect pSQLConnect ;
|
||
|
pfnSQLDescribeCol pSQLDescribeCol ;
|
||
|
pfnSQLDisconnect pSQLDisconnect ;
|
||
|
pfnSQLError pSQLError ;
|
||
|
pfnSQLExecDirect pSQLExecDirect ;
|
||
|
pfnSQLExecute pSQLExecute ;
|
||
|
pfnSQLFetch pSQLFetch ;
|
||
|
pfnSQLFreeConnect pSQLFreeConnect ;
|
||
|
pfnSQLFreeEnv pSQLFreeEnv ;
|
||
|
pfnSQLFreeStmt pSQLFreeStmt ;
|
||
|
pfnSQLGetCursorName pSQLGetCursorName ;
|
||
|
pfnSQLNumResultCols pSQLNumResultCols ;
|
||
|
pfnSQLPrepare pSQLPrepare ;
|
||
|
pfnSQLRowCount pSQLRowCount ;
|
||
|
pfnSQLSetCursorName pSQLSetCursorName ;
|
||
|
pfnSQLTransact pSQLTransact ;
|
||
|
|
||
|
pfnSQLSetConnectOption pSQLSetConnectOption;
|
||
|
pfnSQLDrivers pSQLDrivers ;
|
||
|
pfnSQLDataSources pSQLDataSources ;
|
||
|
pfnSQLBindParameter pSQLBindParameter ;
|
||
|
pfnSQLGetInfo pSQLGetInfo ;
|
||
|
pfnSQLMoreResults pSQLMoreResults ;
|
||
|
|
||
|
static BOOL s_fODBCLoaded = FALSE;
|
||
|
|
||
|
BOOL
|
||
|
DynLoadODBC(
|
||
|
VOID
|
||
|
)
|
||
|
{
|
||
|
HMODULE hMod;
|
||
|
|
||
|
if( s_fODBCLoaded )
|
||
|
{
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
if( ( hMod = ( HMODULE ) LoadLibraryA( ODBC_MODULE_NAME ) ) )
|
||
|
{
|
||
|
if( LOAD_ENTRY( hMod, SQLAllocConnect ) &&
|
||
|
LOAD_ENTRY( hMod, SQLAllocEnv ) &&
|
||
|
LOAD_ENTRY( hMod, SQLAllocStmt ) &&
|
||
|
LOAD_ENTRY( hMod, SQLBindCol ) &&
|
||
|
LOAD_ENTRY( hMod, SQLCancel ) &&
|
||
|
LOAD_ENTRY( hMod, SQLColAttributes ) &&
|
||
|
LOAD_ENTRY( hMod, SQLConnect ) &&
|
||
|
LOAD_ENTRY( hMod, SQLDescribeCol ) &&
|
||
|
LOAD_ENTRY( hMod, SQLDisconnect ) &&
|
||
|
LOAD_ENTRY( hMod, SQLError ) &&
|
||
|
LOAD_ENTRY( hMod, SQLExecDirect ) &&
|
||
|
LOAD_ENTRY( hMod, SQLExecute ) &&
|
||
|
LOAD_ENTRY( hMod, SQLFetch ) &&
|
||
|
LOAD_ENTRY( hMod, SQLFreeConnect ) &&
|
||
|
LOAD_ENTRY( hMod, SQLFreeEnv ) &&
|
||
|
LOAD_ENTRY( hMod, SQLFreeStmt ) &&
|
||
|
LOAD_ENTRY( hMod, SQLNumResultCols ) &&
|
||
|
LOAD_ENTRY( hMod, SQLPrepare ) &&
|
||
|
LOAD_ENTRY( hMod, SQLRowCount ) &&
|
||
|
LOAD_ENTRY( hMod, SQLTransact ) &&
|
||
|
LOAD_ENTRY( hMod, SQLSetConnectOption ) &&
|
||
|
LOAD_ENTRY( hMod, SQLDrivers ) &&
|
||
|
LOAD_ENTRY( hMod, SQLDataSources ) &&
|
||
|
LOAD_ENTRY( hMod, SQLGetInfo ) &&
|
||
|
LOAD_ENTRY( hMod, SQLBindParameter ) &&
|
||
|
LOAD_ENTRY( hMod, SQLMoreResults ) )
|
||
|
{
|
||
|
s_fODBCLoaded = TRUE;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return ( s_fODBCLoaded );
|
||
|
|
||
|
} // DynLoadODBC()
|
||
|
|