| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| // MARKER(update_precomp.py): autogen include statement, do not remove |
| #include "precompiled_connectivity.hxx" |
| #include "ORealDriver.hxx" |
| #include "odbc/ODriver.hxx" |
| #include "odbc/OTools.hxx" |
| #include "odbc/OFunctions.hxx" |
| #include "diagnose_ex.h" |
| |
| namespace connectivity |
| { |
| sal_Bool LoadFunctions(oslModule pODBCso); |
| sal_Bool LoadLibrary_ODBC3(::rtl::OUString &_rPath); |
| // extern declaration of the function pointer |
| extern T3SQLAllocHandle pODBC3SQLAllocHandle; |
| extern T3SQLConnect pODBC3SQLConnect; |
| extern T3SQLDriverConnect pODBC3SQLDriverConnect; |
| extern T3SQLBrowseConnect pODBC3SQLBrowseConnect; |
| extern T3SQLDataSources pODBC3SQLDataSources; |
| extern T3SQLDrivers pODBC3SQLDrivers; |
| extern T3SQLGetInfo pODBC3SQLGetInfo; |
| extern T3SQLGetFunctions pODBC3SQLGetFunctions; |
| extern T3SQLGetTypeInfo pODBC3SQLGetTypeInfo; |
| extern T3SQLSetConnectAttr pODBC3SQLSetConnectAttr; |
| extern T3SQLGetConnectAttr pODBC3SQLGetConnectAttr; |
| extern T3SQLSetEnvAttr pODBC3SQLSetEnvAttr; |
| extern T3SQLGetEnvAttr pODBC3SQLGetEnvAttr; |
| extern T3SQLSetStmtAttr pODBC3SQLSetStmtAttr; |
| extern T3SQLGetStmtAttr pODBC3SQLGetStmtAttr; |
| //extern T3SQLSetDescField pODBC3SQLSetDescField; |
| //extern T3SQLGetDescField pODBC3SQLGetDescField; |
| //extern T3SQLGetDescRec pODBC3SQLGetDescRec; |
| //extern T3SQLSetDescRec pODBC3SQLSetDescRec; |
| extern T3SQLPrepare pODBC3SQLPrepare; |
| extern T3SQLBindParameter pODBC3SQLBindParameter; |
| //extern T3SQLGetCursorName pODBC3SQLGetCursorName; |
| extern T3SQLSetCursorName pODBC3SQLSetCursorName; |
| extern T3SQLExecute pODBC3SQLExecute; |
| extern T3SQLExecDirect pODBC3SQLExecDirect; |
| //extern T3SQLNativeSql pODBC3SQLNativeSql; |
| extern T3SQLDescribeParam pODBC3SQLDescribeParam; |
| extern T3SQLNumParams pODBC3SQLNumParams; |
| extern T3SQLParamData pODBC3SQLParamData; |
| extern T3SQLPutData pODBC3SQLPutData; |
| extern T3SQLRowCount pODBC3SQLRowCount; |
| extern T3SQLNumResultCols pODBC3SQLNumResultCols; |
| extern T3SQLDescribeCol pODBC3SQLDescribeCol; |
| extern T3SQLColAttribute pODBC3SQLColAttribute; |
| extern T3SQLBindCol pODBC3SQLBindCol; |
| extern T3SQLFetch pODBC3SQLFetch; |
| extern T3SQLFetchScroll pODBC3SQLFetchScroll; |
| extern T3SQLGetData pODBC3SQLGetData; |
| extern T3SQLSetPos pODBC3SQLSetPos; |
| extern T3SQLBulkOperations pODBC3SQLBulkOperations; |
| extern T3SQLMoreResults pODBC3SQLMoreResults; |
| //extern T3SQLGetDiagField pODBC3SQLGetDiagField; |
| extern T3SQLGetDiagRec pODBC3SQLGetDiagRec; |
| extern T3SQLColumnPrivileges pODBC3SQLColumnPrivileges; |
| extern T3SQLColumns pODBC3SQLColumns; |
| extern T3SQLForeignKeys pODBC3SQLForeignKeys; |
| extern T3SQLPrimaryKeys pODBC3SQLPrimaryKeys; |
| extern T3SQLProcedureColumns pODBC3SQLProcedureColumns; |
| extern T3SQLProcedures pODBC3SQLProcedures; |
| extern T3SQLSpecialColumns pODBC3SQLSpecialColumns; |
| extern T3SQLStatistics pODBC3SQLStatistics; |
| extern T3SQLTablePrivileges pODBC3SQLTablePrivileges; |
| extern T3SQLTables pODBC3SQLTables; |
| extern T3SQLFreeStmt pODBC3SQLFreeStmt; |
| extern T3SQLCloseCursor pODBC3SQLCloseCursor; |
| extern T3SQLCancel pODBC3SQLCancel; |
| extern T3SQLEndTran pODBC3SQLEndTran; |
| extern T3SQLDisconnect pODBC3SQLDisconnect; |
| extern T3SQLFreeHandle pODBC3SQLFreeHandle; |
| extern T3SQLGetCursorName pODBC3SQLGetCursorName; |
| extern T3SQLNativeSql pODBC3SQLNativeSql; |
| |
| |
| namespace odbc |
| { |
| class ORealObdcDriver : public ODBCDriver |
| { |
| protected: |
| virtual oslGenericFunction getOdbcFunction(sal_Int32 _nIndex) const; |
| virtual SQLHANDLE EnvironmentHandle(::rtl::OUString &_rPath); |
| public: |
| ORealObdcDriver(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory) : ODBCDriver(_rxFactory) {} |
| }; |
| |
| //------------------------------------------------------------------ |
| oslGenericFunction ORealObdcDriver::getOdbcFunction(sal_Int32 _nIndex) const |
| { |
| oslGenericFunction pFunction = NULL; |
| switch(_nIndex) |
| { |
| case ODBC3SQLAllocHandle: |
| pFunction = (oslGenericFunction)pODBC3SQLAllocHandle; |
| break; |
| case ODBC3SQLConnect: |
| pFunction = (oslGenericFunction)pODBC3SQLConnect; |
| break; |
| case ODBC3SQLDriverConnect: |
| pFunction = (oslGenericFunction)pODBC3SQLDriverConnect; |
| break; |
| case ODBC3SQLBrowseConnect: |
| pFunction = (oslGenericFunction)pODBC3SQLBrowseConnect; |
| break; |
| case ODBC3SQLDataSources: |
| pFunction = (oslGenericFunction)pODBC3SQLDataSources; |
| break; |
| case ODBC3SQLDrivers: |
| pFunction = (oslGenericFunction)pODBC3SQLDrivers; |
| break; |
| case ODBC3SQLGetInfo: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLGetInfo; |
| break; |
| case ODBC3SQLGetFunctions: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLGetFunctions; |
| break; |
| case ODBC3SQLGetTypeInfo: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLGetTypeInfo; |
| break; |
| case ODBC3SQLSetConnectAttr: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLSetConnectAttr; |
| break; |
| case ODBC3SQLGetConnectAttr: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLGetConnectAttr; |
| break; |
| case ODBC3SQLSetEnvAttr: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLSetEnvAttr; |
| break; |
| case ODBC3SQLGetEnvAttr: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLGetEnvAttr; |
| break; |
| case ODBC3SQLSetStmtAttr: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLSetStmtAttr; |
| break; |
| case ODBC3SQLGetStmtAttr: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLGetStmtAttr; |
| break; |
| case ODBC3SQLPrepare: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLPrepare; |
| break; |
| case ODBC3SQLBindParameter: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLBindParameter; |
| break; |
| case ODBC3SQLSetCursorName: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLSetCursorName; |
| break; |
| case ODBC3SQLExecute: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLExecute; |
| break; |
| case ODBC3SQLExecDirect: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLExecDirect; |
| break; |
| case ODBC3SQLDescribeParam: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLDescribeParam; |
| break; |
| case ODBC3SQLNumParams: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLNumParams; |
| break; |
| case ODBC3SQLParamData: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLParamData; |
| break; |
| case ODBC3SQLPutData: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLPutData; |
| break; |
| case ODBC3SQLRowCount: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLRowCount; |
| break; |
| case ODBC3SQLNumResultCols: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLNumResultCols; |
| break; |
| case ODBC3SQLDescribeCol: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLDescribeCol; |
| break; |
| case ODBC3SQLColAttribute: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLColAttribute; |
| break; |
| case ODBC3SQLBindCol: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLBindCol; |
| break; |
| case ODBC3SQLFetch: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLFetch; |
| break; |
| case ODBC3SQLFetchScroll: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLFetchScroll; |
| break; |
| case ODBC3SQLGetData: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLGetData; |
| break; |
| case ODBC3SQLSetPos: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLSetPos; |
| break; |
| case ODBC3SQLBulkOperations: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLBulkOperations; |
| break; |
| case ODBC3SQLMoreResults: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLMoreResults; |
| break; |
| case ODBC3SQLGetDiagRec: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLGetDiagRec; |
| break; |
| case ODBC3SQLColumnPrivileges: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLColumnPrivileges; |
| break; |
| case ODBC3SQLColumns: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLColumns; |
| break; |
| case ODBC3SQLForeignKeys: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLForeignKeys; |
| break; |
| case ODBC3SQLPrimaryKeys: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLPrimaryKeys; |
| break; |
| case ODBC3SQLProcedureColumns: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLProcedureColumns; |
| break; |
| case ODBC3SQLProcedures: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLProcedures; |
| break; |
| case ODBC3SQLSpecialColumns: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLSpecialColumns; |
| break; |
| case ODBC3SQLStatistics: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLStatistics; |
| break; |
| case ODBC3SQLTablePrivileges: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLTablePrivileges; |
| break; |
| case ODBC3SQLTables: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLTables; |
| break; |
| case ODBC3SQLFreeStmt: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLFreeStmt; |
| break; |
| case ODBC3SQLCloseCursor: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLCloseCursor; |
| break; |
| case ODBC3SQLCancel: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLCancel; |
| break; |
| case ODBC3SQLEndTran: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLEndTran; |
| break; |
| case ODBC3SQLDisconnect: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLDisconnect; |
| break; |
| case ODBC3SQLFreeHandle: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLFreeHandle; |
| break; |
| case ODBC3SQLGetCursorName: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLGetCursorName; |
| break; |
| case ODBC3SQLNativeSql: |
| |
| pFunction = (oslGenericFunction)pODBC3SQLNativeSql; |
| break; |
| default: |
| OSL_ENSURE(0,"Function unknown!"); |
| } |
| return pFunction; |
| } |
| |
| //------------------------------------------------------------------ |
| ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL ODBCDriver_CreateInstance(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory) throw( ::com::sun::star::uno::Exception ) |
| { |
| return *(new ORealObdcDriver(_rxFactory)); |
| } |
| // ----------------------------------------------------------------------------- |
| // ODBC Environment (gemeinsam fuer alle Connections): |
| SQLHANDLE ORealObdcDriver::EnvironmentHandle(::rtl::OUString &_rPath) |
| { |
| // Ist (fuer diese Instanz) bereits ein Environment erzeugt worden? |
| if (!m_pDriverHandle) |
| { |
| SQLHANDLE h = SQL_NULL_HANDLE; |
| // Environment allozieren |
| |
| // ODBC-DLL jetzt laden: |
| if (!LoadLibrary_ODBC3(_rPath) || N3SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&h) != SQL_SUCCESS) |
| return SQL_NULL_HANDLE; |
| |
| // In globaler Struktur merken ... |
| m_pDriverHandle = h; |
| SQLRETURN nError = N3SQLSetEnvAttr(h, SQL_ATTR_ODBC_VERSION,(SQLPOINTER) SQL_OV_ODBC3, SQL_IS_UINTEGER); |
| OSL_UNUSED( nError ); |
| //N3SQLSetEnvAttr(h, SQL_ATTR_CONNECTION_POOLING,(SQLPOINTER) SQL_CP_ONE_PER_HENV, SQL_IS_INTEGER); |
| } |
| |
| return m_pDriverHandle; |
| } |
| // ----------------------------------------------------------------------------- |
| |
| } |
| } |
| |