1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: BFunctions.cxx,v $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 // MARKER(update_precomp.py): autogen include statement, do not remove
32 #include "precompiled_connectivity.hxx"
34 //--------------------------------------------------------------------------
35 #include "odbc/OFunctions.hxx"
36 #include <osl/process.h>
38 // Implib-Definitionen fuer ODBC-DLL/shared library:
40 namespace connectivity
44 T3SQLAllocHandle pODBC3SQLAllocHandle
;
45 T3SQLConnect pODBC3SQLConnect
;
46 T3SQLDriverConnect pODBC3SQLDriverConnect
;
47 T3SQLBrowseConnect pODBC3SQLBrowseConnect
;
48 T3SQLDataSources pODBC3SQLDataSources
;
49 T3SQLDrivers pODBC3SQLDrivers
;
50 T3SQLGetInfo pODBC3SQLGetInfo
;
51 T3SQLGetFunctions pODBC3SQLGetFunctions
;
52 T3SQLGetTypeInfo pODBC3SQLGetTypeInfo
;
53 T3SQLSetConnectAttr pODBC3SQLSetConnectAttr
;
54 T3SQLGetConnectAttr pODBC3SQLGetConnectAttr
;
55 T3SQLSetEnvAttr pODBC3SQLSetEnvAttr
;
56 T3SQLGetEnvAttr pODBC3SQLGetEnvAttr
;
57 T3SQLSetStmtAttr pODBC3SQLSetStmtAttr
;
58 T3SQLGetStmtAttr pODBC3SQLGetStmtAttr
;
59 //T3SQLSetDescField pODBC3SQLSetDescField;
60 //T3SQLGetDescField pODBC3SQLGetDescField;
61 //T3SQLGetDescRec pODBC3SQLGetDescRec;
62 //T3SQLSetDescRec pODBC3SQLSetDescRec;
63 T3SQLPrepare pODBC3SQLPrepare
;
64 T3SQLBindParameter pODBC3SQLBindParameter
;
65 //T3SQLGetCursorName pODBC3SQLGetCursorName;
66 T3SQLSetCursorName pODBC3SQLSetCursorName
;
67 T3SQLExecute pODBC3SQLExecute
;
68 T3SQLExecDirect pODBC3SQLExecDirect
;
69 //T3SQLNativeSql pODBC3SQLNativeSql;
70 T3SQLDescribeParam pODBC3SQLDescribeParam
;
71 T3SQLNumParams pODBC3SQLNumParams
;
72 T3SQLParamData pODBC3SQLParamData
;
73 T3SQLPutData pODBC3SQLPutData
;
74 T3SQLRowCount pODBC3SQLRowCount
;
75 T3SQLNumResultCols pODBC3SQLNumResultCols
;
76 T3SQLDescribeCol pODBC3SQLDescribeCol
;
77 T3SQLColAttribute pODBC3SQLColAttribute
;
78 T3SQLBindCol pODBC3SQLBindCol
;
79 T3SQLFetch pODBC3SQLFetch
;
80 T3SQLFetchScroll pODBC3SQLFetchScroll
;
81 T3SQLGetData pODBC3SQLGetData
;
82 T3SQLSetPos pODBC3SQLSetPos
;
83 T3SQLBulkOperations pODBC3SQLBulkOperations
;
84 T3SQLMoreResults pODBC3SQLMoreResults
;
85 //T3SQLGetDiagField pODBC3SQLGetDiagField;
86 T3SQLGetDiagRec pODBC3SQLGetDiagRec
;
87 T3SQLColumnPrivileges pODBC3SQLColumnPrivileges
;
88 T3SQLColumns pODBC3SQLColumns
;
89 T3SQLForeignKeys pODBC3SQLForeignKeys
;
90 T3SQLPrimaryKeys pODBC3SQLPrimaryKeys
;
91 T3SQLProcedureColumns pODBC3SQLProcedureColumns
;
92 T3SQLProcedures pODBC3SQLProcedures
;
93 T3SQLSpecialColumns pODBC3SQLSpecialColumns
;
94 T3SQLStatistics pODBC3SQLStatistics
;
95 T3SQLTablePrivileges pODBC3SQLTablePrivileges
;
96 T3SQLTables pODBC3SQLTables
;
97 T3SQLFreeStmt pODBC3SQLFreeStmt
;
98 T3SQLCloseCursor pODBC3SQLCloseCursor
;
99 T3SQLCancel pODBC3SQLCancel
;
100 T3SQLEndTran pODBC3SQLEndTran
;
101 T3SQLDisconnect pODBC3SQLDisconnect
;
102 T3SQLFreeHandle pODBC3SQLFreeHandle
;
103 T3SQLGetCursorName pODBC3SQLGetCursorName
;
104 T3SQLNativeSql pODBC3SQLNativeSql
;
107 sal_Bool
LoadFunctions(oslModule pODBCso
);
108 // -------------------------------------------------------------------------
109 sal_Bool
LoadLibrary_ADABAS(::rtl::OUString
&_rPath
)
111 static sal_Bool bLoaded
= sal_False
;
112 static oslModule pODBCso
= NULL
;
117 rtl_uString
* pPath
= NULL
;
118 ::rtl::OUString
sTemp(RTL_CONSTASCII_USTRINGPARAM("DBROOT"));
119 if ( osl_getEnvironment(sTemp
.pData
,&pPath
) == osl_Process_E_None
&& pPath
)
122 #if ( defined(SOLARIS) && defined(SPARC)) || defined(LINUX) || defined(MACOSX)
123 _rPath
= ::rtl::OUString(pPath
);
124 _rPath
+= ::rtl::OUString::createFromAscii("/lib/");
126 rtl_uString_release(pPath
);
130 _rPath
= ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("The variable DBROOT is not set."));
133 const sal_Char
* pLibraryAsciiName
= NULL
;
135 #if defined(WIN) || defined(WNT)
136 pLibraryAsciiName
= "SQLOD32.DLL";
137 #elif ( defined(SOLARIS) && defined(SPARC)) || defined(LINUX)
138 pLibraryAsciiName
= "odbclib.so";
139 #elif defined(MACOSX)
140 pLibraryAsciiName
= "odbclib.dylib";
142 if ( !pLibraryAsciiName
)
145 _rPath
+= ::rtl::OUString::createFromAscii( pLibraryAsciiName
);
146 pODBCso
= osl_loadModule( _rPath
.pData
,SAL_LOADMODULE_NOW
);
151 return bLoaded
= LoadFunctions(pODBCso
);
153 // -------------------------------------------------------------------------
155 sal_Bool
LoadFunctions(oslModule pODBCso
)
158 if( ( pODBC3SQLAllocHandle
= (T3SQLAllocHandle
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLAllocHandle").pData
)) == NULL
)
160 if( ( pODBC3SQLConnect
= (T3SQLConnect
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLConnect").pData
)) == NULL
)
162 if( ( pODBC3SQLDriverConnect
= (T3SQLDriverConnect
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLDriverConnect").pData
)) == NULL
)
164 if( ( pODBC3SQLBrowseConnect
= (T3SQLBrowseConnect
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLBrowseConnect").pData
)) == NULL
)
166 if( ( pODBC3SQLGetInfo
= (T3SQLGetInfo
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLGetInfo").pData
)) == NULL
)
168 if( ( pODBC3SQLGetTypeInfo
= (T3SQLGetTypeInfo
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLGetTypeInfo").pData
)) == NULL
)
170 if( ( pODBC3SQLSetConnectAttr
= (T3SQLSetConnectAttr
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLSetConnectAttr").pData
)) == NULL
)
172 if( ( pODBC3SQLGetConnectAttr
= (T3SQLGetConnectAttr
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLGetConnectAttr").pData
)) == NULL
)
174 if( ( pODBC3SQLSetEnvAttr
= (T3SQLSetEnvAttr
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLSetEnvAttr").pData
)) == NULL
)
176 if( ( pODBC3SQLGetEnvAttr
= (T3SQLGetEnvAttr
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLGetEnvAttr").pData
)) == NULL
)
178 if( ( pODBC3SQLSetStmtAttr
= (T3SQLSetStmtAttr
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLSetStmtAttr").pData
)) == NULL
)
180 if( ( pODBC3SQLGetStmtAttr
= (T3SQLGetStmtAttr
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLGetStmtAttr").pData
)) == NULL
)
182 /*if( ( pODBC3SQLSetDescField = (T3SQLSetDescField)osl_getFunctionSymbol(pODBCso, ::rtl::OUString::createFromAscii("SQLSetDescField").pData )) == NULL )
184 if( ( pODBC3SQLGetDescField = (T3SQLGetDescField)osl_getFunctionSymbol(pODBCso, ::rtl::OUString::createFromAscii("SQLGetDescField").pData )) == NULL )
186 /*if( ( pODBC3SQLGetDescRec = (T3SQLGetDescRec)osl_getFunctionSymbol(pODBCso, ::rtl::OUString::createFromAscii("SQLGetDescRec").pData )) == NULL )
188 if( ( pODBC3SQLSetDescRec = (T3SQLSetDescRec)osl_getFunctionSymbol(pODBCso, ::rtl::OUString::createFromAscii("SQLSetDescRec").pData )) == NULL )
190 if( ( pODBC3SQLPrepare
= (T3SQLPrepare
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLPrepare").pData
)) == NULL
)
192 if( ( pODBC3SQLBindParameter
= (T3SQLBindParameter
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLBindParameter").pData
)) == NULL
)
194 // if( ( pODBC3SQLGetCursorName = (T3SQLGetCursorName)osl_getFunctionSymbol(pODBCso, ::rtl::OUString::createFromAscii("SQLGetCursorName").pData )) == NULL )
196 if( ( pODBC3SQLSetCursorName
= (T3SQLSetCursorName
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLSetCursorName").pData
)) == NULL
)
198 if( ( pODBC3SQLExecute
= (T3SQLExecute
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLExecute").pData
)) == NULL
)
200 if( ( pODBC3SQLExecDirect
= (T3SQLExecDirect
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLExecDirect").pData
)) == NULL
)
202 /*if( ( pODBC3SQLNativeSql = (T3SQLNativeSql)osl_getFunctionSymbol(pODBCso, ::rtl::OUString::createFromAscii("SQLNativeSql").pData )) == NULL )
204 if( ( pODBC3SQLDescribeParam
= (T3SQLDescribeParam
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLDescribeParam").pData
)) == NULL
)
206 if( ( pODBC3SQLNumParams
= (T3SQLNumParams
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLNumParams").pData
)) == NULL
)
208 if( ( pODBC3SQLParamData
= (T3SQLParamData
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLParamData").pData
)) == NULL
)
210 if( ( pODBC3SQLPutData
= (T3SQLPutData
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLPutData").pData
)) == NULL
)
212 if( ( pODBC3SQLRowCount
= (T3SQLRowCount
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLRowCount").pData
)) == NULL
)
214 if( ( pODBC3SQLNumResultCols
= (T3SQLNumResultCols
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLNumResultCols").pData
)) == NULL
)
216 if( ( pODBC3SQLDescribeCol
= (T3SQLDescribeCol
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLDescribeCol").pData
)) == NULL
)
218 if( ( pODBC3SQLColAttribute
= (T3SQLColAttribute
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLColAttribute").pData
)) == NULL
)
220 if( ( pODBC3SQLBindCol
= (T3SQLBindCol
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLBindCol").pData
)) == NULL
)
222 if( ( pODBC3SQLFetch
= (T3SQLFetch
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLFetch").pData
)) == NULL
)
224 if( ( pODBC3SQLFetchScroll
= (T3SQLFetchScroll
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLFetchScroll").pData
)) == NULL
)
226 if( ( pODBC3SQLGetData
= (T3SQLGetData
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLGetData").pData
)) == NULL
)
228 if( ( pODBC3SQLSetPos
= (T3SQLSetPos
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLSetPos").pData
)) == NULL
)
230 if( ( pODBC3SQLMoreResults
= (T3SQLMoreResults
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLMoreResults").pData
)) == NULL
)
232 /*if( ( pODBC3SQLGetDiagField = (T3SQLGetDiagField)osl_getFunctionSymbol(pODBCso, ::rtl::OUString::createFromAscii("SQLGetDiagField").pData )) == NULL )
234 if( ( pODBC3SQLGetDiagRec
= (T3SQLGetDiagRec
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLGetDiagRec").pData
)) == NULL
)
236 if( ( pODBC3SQLColumnPrivileges
= (T3SQLColumnPrivileges
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLColumnPrivileges").pData
)) == NULL
)
238 if( ( pODBC3SQLColumns
= (T3SQLColumns
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLColumns").pData
)) == NULL
)
240 if( ( pODBC3SQLForeignKeys
= (T3SQLForeignKeys
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLForeignKeys").pData
)) == NULL
)
242 if( ( pODBC3SQLPrimaryKeys
= (T3SQLPrimaryKeys
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLPrimaryKeys").pData
)) == NULL
)
244 if( ( pODBC3SQLProcedureColumns
= (T3SQLProcedureColumns
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLProcedureColumns").pData
)) == NULL
)
246 if( ( pODBC3SQLProcedures
= (T3SQLProcedures
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLProcedures").pData
)) == NULL
)
248 if( ( pODBC3SQLSpecialColumns
= (T3SQLSpecialColumns
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLSpecialColumns").pData
)) == NULL
)
250 if( ( pODBC3SQLStatistics
= (T3SQLStatistics
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLStatistics").pData
)) == NULL
)
252 if( ( pODBC3SQLTablePrivileges
= (T3SQLTablePrivileges
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLTablePrivileges").pData
)) == NULL
)
254 if( ( pODBC3SQLTables
= (T3SQLTables
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLTables").pData
)) == NULL
)
256 if( ( pODBC3SQLFreeStmt
= (T3SQLFreeStmt
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLFreeStmt").pData
)) == NULL
)
258 if( ( pODBC3SQLCloseCursor
= (T3SQLCloseCursor
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLCloseCursor").pData
)) == NULL
)
260 if( ( pODBC3SQLCancel
= (T3SQLCancel
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLCancel").pData
)) == NULL
)
262 if( ( pODBC3SQLEndTran
= (T3SQLEndTran
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLEndTran").pData
)) == NULL
)
264 if( ( pODBC3SQLDisconnect
= (T3SQLDisconnect
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLDisconnect").pData
)) == NULL
)
266 if( ( pODBC3SQLFreeHandle
= (T3SQLFreeHandle
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLFreeHandle").pData
)) == NULL
)
268 if( ( pODBC3SQLGetCursorName
= (T3SQLGetCursorName
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLGetCursorName").pData
)) == NULL
)
270 if( ( pODBC3SQLNativeSql
= (T3SQLNativeSql
)osl_getFunctionSymbol(pODBCso
, ::rtl::OUString::createFromAscii("SQLNativeSql").pData
)) == NULL
)
275 // -------------------------------------------------------------------------