2010-10-27 13:11:31 +01:00
|
|
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2012-06-12 22:04:38 +01:00
|
|
|
/*
|
|
|
|
* This file is part of the LibreOffice project.
|
|
|
|
*
|
|
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
*
|
|
|
|
* This file incorporates work covered by the following license notice:
|
|
|
|
*
|
|
|
|
* 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 .
|
|
|
|
*/
|
2000-09-18 15:18:56 +00:00
|
|
|
#ifndef _CONNECTIVITY_OTOOLS_HXX_
|
|
|
|
#define _CONNECTIVITY_OTOOLS_HXX_
|
|
|
|
|
|
|
|
#include "odbc/OFunctiondefs.hxx"
|
2008-12-30 13:32:01 +00:00
|
|
|
#include "odbc/odbcbasedllapi.hxx"
|
2000-09-18 15:18:56 +00:00
|
|
|
#include <com/sun/star/sdbc/SQLException.hpp>
|
|
|
|
#include <com/sun/star/util/Date.hpp>
|
|
|
|
#include <com/sun/star/util/Time.hpp>
|
|
|
|
#include <com/sun/star/util/DateTime.hpp>
|
|
|
|
#include <osl/thread.h>
|
|
|
|
#include <rtl/ustring.hxx>
|
|
|
|
#include <com/sun/star/uno/Sequence.hxx>
|
2001-02-05 11:26:42 +00:00
|
|
|
#include <rtl/textenc.h>
|
2000-09-18 15:18:56 +00:00
|
|
|
|
2001-05-15 07:18:32 +00:00
|
|
|
#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
|
|
|
|
|
2000-09-18 15:18:56 +00:00
|
|
|
namespace connectivity
|
|
|
|
{
|
|
|
|
namespace odbc
|
|
|
|
{
|
2001-05-15 07:18:32 +00:00
|
|
|
class OConnection;
|
2000-09-18 15:18:56 +00:00
|
|
|
|
|
|
|
const sal_uInt32 ODBC_FRACTION_UNITS_PER_HSECOND = 10000000L;
|
|
|
|
const sal_Int32 MAX_PUT_DATA_LENGTH = 2000;
|
|
|
|
|
2008-12-30 13:32:01 +00:00
|
|
|
class OOO_DLLPUBLIC_ODBCBASE OTools
|
2000-09-18 15:18:56 +00:00
|
|
|
{
|
|
|
|
public:
|
2001-05-15 07:18:32 +00:00
|
|
|
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,
|
2001-02-05 11:26:42 +00:00
|
|
|
rtl_TextEncoding _nTextEncoding = RTL_TEXTENCODING_MS_1252)
|
2001-05-15 07:18:32 +00:00
|
|
|
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);
|
2001-09-18 10:22:34 +00:00
|
|
|
|
|
|
|
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);
|
2000-09-18 15:18:56 +00:00
|
|
|
|
2001-05-15 07:18:32 +00:00
|
|
|
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);
|
2000-09-18 15:18:56 +00:00
|
|
|
|
2012-10-26 18:57:34 +02:00
|
|
|
static sal_Int32 MapOdbcType2Jdbc(SQLSMALLINT _nType);
|
|
|
|
static SQLSMALLINT jdbcTypeToOdbc(sal_Int32 jdbcType);
|
2000-09-18 15:18:56 +00:00
|
|
|
|
|
|
|
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;
|
|
|
|
}
|
2001-11-30 13:09:45 +00:00
|
|
|
/**
|
|
|
|
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);
|
2001-05-15 07:18:32 +00:00
|
|
|
|
|
|
|
static ::rtl::OUString getStringValue( OConnection* _pConnection,
|
|
|
|
SQLHANDLE _aStatementHandle,
|
|
|
|
sal_Int32 columnIndex,
|
2009-10-01 09:16:17 +00:00
|
|
|
SQLSMALLINT _fSqlType,
|
2001-05-15 07:18:32 +00:00
|
|
|
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<sal_Int8> getBytesValue(OConnection* _pConnection,
|
|
|
|
SQLHANDLE _aStatementHandle,
|
|
|
|
sal_Int32 columnIndex,
|
2009-10-01 09:16:17 +00:00
|
|
|
SQLSMALLINT _fSqlType,
|
2001-05-15 07:18:32 +00:00
|
|
|
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,
|
2009-10-01 09:16:17 +00:00
|
|
|
SQLLEN _nSize) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
|
2000-09-18 15:18:56 +00:00
|
|
|
|
2001-05-15 07:18:32 +00:00
|
|
|
static void bindValue( OConnection* _pConnection,
|
|
|
|
SQLHANDLE _aStatementHandle,
|
|
|
|
sal_Int32 columnIndex,
|
|
|
|
SQLSMALLINT _nType,
|
|
|
|
SQLSMALLINT _nMaxLen,
|
|
|
|
const void* _pValue,
|
2001-11-30 13:09:45 +00:00
|
|
|
void* _pData,
|
2009-10-01 09:16:17 +00:00
|
|
|
SQLLEN *pLen,
|
2001-05-15 07:18:32 +00:00
|
|
|
const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xInterface,
|
2001-05-21 13:30:34 +00:00
|
|
|
rtl_TextEncoding _nTextEncoding,
|
|
|
|
sal_Bool _bUseOldTimeDate) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
|
2001-05-15 07:18:32 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
template <class T> void getValue( OConnection* _pConnection,
|
|
|
|
SQLHANDLE _aStatementHandle,
|
2001-05-02 11:57:37 +00:00
|
|
|
sal_Int32 columnIndex,
|
|
|
|
SQLSMALLINT _nType,
|
2001-05-15 07:18:32 +00:00
|
|
|
sal_Bool &_bWasNull,
|
2001-05-02 11:57:37 +00:00
|
|
|
const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xInterface,
|
2001-05-15 07:18:32 +00:00
|
|
|
T& _rValue) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
|
2001-05-14 10:42:44 +00:00
|
|
|
{
|
2001-05-15 07:18:32 +00:00
|
|
|
OTools::getValue(_pConnection,_aStatementHandle,columnIndex,_nType,_bWasNull,_xInterface,&_rValue,sizeof _rValue);
|
2001-05-14 10:42:44 +00:00
|
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
2000-09-18 15:18:56 +00:00
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif // _CONNECTIVITY_OTOOLS_HXX_
|
|
|
|
|
2010-10-27 13:11:31 +01:00
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|