/************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * Copyright 2008 by Sun Microsystems, Inc. * * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: OTools.hxx,v $ * $Revision: 1.13 $ * * This file is part of OpenOffice.org. * * OpenOffice.org is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 3 * only, as published by the Free Software Foundation. * * OpenOffice.org is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License version 3 for more details * (a copy is included in the LICENSE file that accompanied this code). * * You should have received a copy of the GNU Lesser General Public License * version 3 along with OpenOffice.org. If not, see * * for a copy of the LGPLv3 License. * ************************************************************************/ #ifndef _CONNECTIVITY_OTOOLS_HXX_ #define _CONNECTIVITY_OTOOLS_HXX_ #include "odbc/OFunctiondefs.hxx" #include "odbc/odbcbasedllapi.hxx" #include #include #include #include #include #include #include #include #define ODBC3SQLAllocHandle 1 #define ODBC3SQLConnect 2 #define ODBC3SQLDriverConnect 3 #define ODBC3SQLBrowseConnect 4 #define ODBC3SQLDataSources 5 #define ODBC3SQLDrivers 6 #define ODBC3SQLGetInfo 7 #define ODBC3SQLGetFunctions 8 #define ODBC3SQLGetTypeInfo 9 #define ODBC3SQLSetConnectAttr 10 #define ODBC3SQLGetConnectAttr 11 #define ODBC3SQLSetEnvAttr 12 #define ODBC3SQLGetEnvAttr 13 #define ODBC3SQLSetStmtAttr 14 #define ODBC3SQLGetStmtAttr 15 #define ODBC3SQLPrepare 16 #define ODBC3SQLBindParameter 17 #define ODBC3SQLSetCursorName 18 #define ODBC3SQLExecute 19 #define ODBC3SQLExecDirect 20 #define ODBC3SQLDescribeParam 21 #define ODBC3SQLNumParams 22 #define ODBC3SQLParamData 23 #define ODBC3SQLPutData 24 #define ODBC3SQLRowCount 25 #define ODBC3SQLNumResultCols 26 #define ODBC3SQLDescribeCol 27 #define ODBC3SQLColAttribute 28 #define ODBC3SQLBindCol 29 #define ODBC3SQLFetch 30 #define ODBC3SQLFetchScroll 31 #define ODBC3SQLGetData 32 #define ODBC3SQLSetPos 33 #define ODBC3SQLBulkOperations 34 #define ODBC3SQLMoreResults 35 #define ODBC3SQLGetDiagRec 36 #define ODBC3SQLColumnPrivileges 37 #define ODBC3SQLColumns 38 #define ODBC3SQLForeignKeys 39 #define ODBC3SQLPrimaryKeys 40 #define ODBC3SQLProcedureColumns 41 #define ODBC3SQLProcedures 42 #define ODBC3SQLSpecialColumns 43 #define ODBC3SQLStatistics 44 #define ODBC3SQLTablePrivileges 45 #define ODBC3SQLTables 46 #define ODBC3SQLFreeStmt 47 #define ODBC3SQLCloseCursor 48 #define ODBC3SQLCancel 49 #define ODBC3SQLEndTran 50 #define ODBC3SQLDisconnect 51 #define ODBC3SQLFreeHandle 52 #define ODBC3SQLGetCursorName 53 #define ODBC3SQLNativeSql 54 namespace connectivity { namespace odbc { class OConnection; const sal_uInt32 ODBC_FRACTION_UNITS_PER_HSECOND = 10000000L; const sal_Int32 MAX_PUT_DATA_LENGTH = 2000; class OOO_DLLPUBLIC_ODBCBASE OTools { public: static void ThrowException( OConnection* _pConnection, SQLRETURN _rRetCode, SQLHANDLE _pContext, SQLSMALLINT _nHandleType, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xInterface, sal_Bool _bNoFound=sal_True, rtl_TextEncoding _nTextEncoding = RTL_TEXTENCODING_MS_1252) throw(::com::sun::star::sdbc::SQLException); static void GetInfo(OConnection* _pConnection, SQLHANDLE _aConnectionHandle, SQLUSMALLINT _nInfo, ::rtl::OUString &_rValue, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xInterface, rtl_TextEncoding _nTextEncoding) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); static void GetInfo(OConnection* _pConnection, SQLHANDLE _aConnectionHandle, SQLUSMALLINT _nInfo, sal_Int32 &_rValue, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xInterface) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); static void GetInfo(OConnection* _pConnection, SQLHANDLE _aConnectionHandle, SQLUSMALLINT _nInfo, SQLUSMALLINT &_rValue, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xInterface) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); static void GetInfo(OConnection* _pConnection, SQLHANDLE _aConnectionHandle, SQLUSMALLINT _nInfo, SQLUINTEGER &_rValue, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xInterface) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); static void GetInfo(OConnection* _pConnection, SQLHANDLE _aConnectionHandle, SQLUSMALLINT _nInfo, sal_Bool &_rValue, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xInterface) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); static sal_Int32 MapOdbcType2Jdbc(sal_Int32 _nType); static sal_Int32 jdbcTypeToOdbc(sal_Int32 jdbcType); static DATE_STRUCT DateToOdbcDate(const ::com::sun::star::util::Date& x) { DATE_STRUCT aVal; aVal.year = x.Year; aVal.month = x.Month; aVal.day = x.Day; return aVal; } static TIME_STRUCT TimeToOdbcTime(const ::com::sun::star::util::Time& x) { TIME_STRUCT aVal; aVal.hour = x.Hours; aVal.minute = x.Minutes; aVal.second = x.Seconds; return aVal; } static TIMESTAMP_STRUCT DateTimeToTimestamp(const ::com::sun::star::util::DateTime& x) { TIMESTAMP_STRUCT aVal; aVal.year = x.Year; aVal.month = x.Month; aVal.day = x.Day; aVal.hour = x.Hours; aVal.minute = x.Minutes; aVal.second = x.Seconds; aVal.fraction = x.HundredthSeconds * ODBC_FRACTION_UNITS_PER_HSECOND; return aVal; } /** getBindTypes set the ODBC type for C @param _bUseWChar true when Unicode should be used @param _bUseOldTimeDate true when the old datetime format should be used @param _nOdbcType the ODBC sql type @param fCType the C type for the ODBC type @param fSqlType the SQL type for the ODBC type */ static void getBindTypes(sal_Bool _bUseWChar, sal_Bool _bUseOldTimeDate, SQLSMALLINT _nOdbcType, SQLSMALLINT& fCType, SQLSMALLINT& fSqlType); static ::rtl::OUString getStringValue( OConnection* _pConnection, SQLHANDLE _aStatementHandle, sal_Int32 columnIndex, SWORD _fSqlType, sal_Bool &_bWasNull, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xInterface, rtl_TextEncoding _nTextEncoding) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); static ::com::sun::star::uno::Sequence getBytesValue(OConnection* _pConnection, SQLHANDLE _aStatementHandle, sal_Int32 columnIndex, SWORD _fSqlType, sal_Bool &_bWasNull, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xInterface) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); static void getValue( OConnection* _pConnection, SQLHANDLE _aStatementHandle, sal_Int32 columnIndex, SQLSMALLINT _nType, sal_Bool &_bWasNull, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xInterface, void* _pValue, SQLINTEGER _rSize) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); /** bindData copies the from pValue to pData @param _nOdbcType the ODBC sql type @param _bUseWChar true when Unicode should be used @param _pData contains a copy of the data to be set @param _pValue contains the data to be copied @param _nTextEncoding the text encoding @param _nColumnSize the columnsize which is a out param */ static void bindData( SQLSMALLINT _nOdbcType, sal_Bool _bUseWChar, sal_Int8 *&_pData, SQLINTEGER*& pLen, const void* _pValue, rtl_TextEncoding _nTextEncoding, SQLUINTEGER& _nColumnSize); static void bindParameter( OConnection* _pConnection, SQLHANDLE _hStmt, sal_Int32 nPos, sal_Int8*& pDataBuffer, sal_Int8* pLenBuffer, SQLSMALLINT _nJDBCtype, sal_Bool _bUseWChar, sal_Bool _bUseOldTimeDate, const void* _pValue, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xInterface, rtl_TextEncoding _nTextEncoding) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); static void bindValue( OConnection* _pConnection, SQLHANDLE _aStatementHandle, sal_Int32 columnIndex, SQLSMALLINT _nType, SQLSMALLINT _nMaxLen, const void* _pValue, void* _pData, SQLINTEGER *pLen, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xInterface, rtl_TextEncoding _nTextEncoding, sal_Bool _bUseOldTimeDate) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); }; template void getValue( OConnection* _pConnection, SQLHANDLE _aStatementHandle, sal_Int32 columnIndex, SQLSMALLINT _nType, sal_Bool &_bWasNull, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xInterface, T& _rValue) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) { OTools::getValue(_pConnection,_aStatementHandle,columnIndex,_nType,_bWasNull,_xInterface,&_rValue,sizeof _rValue); } //----------------------------------------------------------------------------- } } #endif // _CONNECTIVITY_OTOOLS_HXX_