summaryrefslogtreecommitdiffstats
path: root/connectivity/source/inc/odbc/OTools.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'connectivity/source/inc/odbc/OTools.hxx')
-rw-r--r--connectivity/source/inc/odbc/OTools.hxx245
1 files changed, 245 insertions, 0 deletions
diff --git a/connectivity/source/inc/odbc/OTools.hxx b/connectivity/source/inc/odbc/OTools.hxx
new file mode 100644
index 000000000..b03db91dc
--- /dev/null
+++ b/connectivity/source/inc/odbc/OTools.hxx
@@ -0,0 +1,245 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * 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 .
+ */
+#pragma once
+
+#include <connectivity/odbc.hxx>
+#include <odbc/odbcbasedllapi.hxx>
+#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>
+#include <rtl/textenc.h>
+
+enum class ODBC3SQLFunctionId
+{
+ AllocHandle = 1,
+ Connect = 2,
+ DriverConnect = 3,
+ BrowseConnect = 4,
+ DataSources = 5,
+ Drivers = 6,
+ GetInfo = 7,
+ GetFunctions = 8,
+ GetTypeInfo = 9,
+ SetConnectAttr = 10,
+ GetConnectAttr = 11,
+ SetEnvAttr = 12,
+ GetEnvAttr = 13,
+ SetStmtAttr = 14,
+ GetStmtAttr = 15,
+ Prepare = 16,
+ BindParameter = 17,
+ SetCursorName = 18,
+ Execute = 19,
+ ExecDirect = 20,
+ DescribeParam = 21,
+ NumParams = 22,
+ ParamData = 23,
+ PutData = 24,
+ RowCount = 25,
+ NumResultCols = 26,
+ DescribeCol = 27,
+ ColAttribute = 28,
+ BindCol = 29,
+ Fetch = 30,
+ FetchScroll = 31,
+ GetData = 32,
+ SetPos = 33,
+ BulkOperations = 34,
+ MoreResults = 35,
+ GetDiagRec = 36,
+ ColumnPrivileges = 37,
+ Columns = 38,
+ ForeignKeys = 39,
+ PrimaryKeys = 40,
+ ProcedureColumns = 41,
+ Procedures = 42,
+ SpecialColumns = 43,
+ Statistics = 44,
+ TablePrivileges = 45,
+ Tables = 46,
+ FreeStmt = 47,
+ CloseCursor = 48,
+ Cancel = 49,
+ EndTran = 50,
+ Disconnect = 51,
+ FreeHandle = 52,
+ GetCursorName = 53,
+ NativeSql = 54,
+};
+
+namespace connectivity::odbc
+ {
+ class OConnection;
+
+ const sal_Int32 MAX_PUT_DATA_LENGTH = 2000;
+
+ class OOO_DLLPUBLIC_ODBCBASE OTools
+ {
+ public:
+ /// @throws css::sdbc::SQLException
+ static void ThrowException( const OConnection* _pConnection,
+ SQLRETURN _rRetCode,
+ SQLHANDLE _pContext,
+ SQLSMALLINT _nHandleType,
+ const css::uno::Reference< css::uno::XInterface >& _xInterface,
+ bool _bNoFound=true);
+
+ /// @throws css::sdbc::SQLException
+ /// @throws css::uno::RuntimeException
+ static void GetInfo(OConnection const * _pConnection,
+ SQLHANDLE _aConnectionHandle,
+ SQLUSMALLINT _nInfo,
+ OUString &_rValue,
+ const css::uno::Reference< css::uno::XInterface >& _xInterface,
+ rtl_TextEncoding _nTextEncoding);
+
+ /// @throws css::sdbc::SQLException
+ /// @throws css::uno::RuntimeException
+ static void GetInfo(OConnection const * _pConnection,
+ SQLHANDLE _aConnectionHandle,
+ SQLUSMALLINT _nInfo,
+ sal_Int32 &_rValue,
+ const css::uno::Reference< css::uno::XInterface >& _xInterface);
+
+ /// @throws css::sdbc::SQLException
+ /// @throws css::uno::RuntimeException
+ static void GetInfo(OConnection const * _pConnection,
+ SQLHANDLE _aConnectionHandle,
+ SQLUSMALLINT _nInfo,
+ SQLUSMALLINT &_rValue,
+ const css::uno::Reference< css::uno::XInterface >& _xInterface);
+
+ /// @throws css::sdbc::SQLException
+ /// @throws css::uno::RuntimeException
+ static void GetInfo(OConnection const * _pConnection,
+ SQLHANDLE _aConnectionHandle,
+ SQLUSMALLINT _nInfo,
+ SQLUINTEGER &_rValue,
+ const css::uno::Reference< css::uno::XInterface >& _xInterface);
+
+ static sal_Int32 MapOdbcType2Jdbc(SQLSMALLINT _nType);
+ static SQLSMALLINT jdbcTypeToOdbc(sal_Int32 jdbcType);
+
+ static DATE_STRUCT DateToOdbcDate(const css::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 css::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 css::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.NanoSeconds;
+ 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(bool _bUseWChar,
+ bool _bUseOldTimeDate,
+ SQLSMALLINT _nOdbcType,
+ SQLSMALLINT& fCType,
+ SQLSMALLINT& fSqlType);
+
+ /// @throws css::sdbc::SQLException
+ /// @throws css::uno::RuntimeException
+ static OUString getStringValue( OConnection const * _pConnection,
+ SQLHANDLE _aStatementHandle,
+ sal_Int32 columnIndex,
+ SQLSMALLINT _fSqlType,
+ bool &_bWasNull,
+ const css::uno::Reference< css::uno::XInterface >& _xInterface,
+ rtl_TextEncoding _nTextEncoding);
+
+ /// @throws css::sdbc::SQLException
+ /// @throws css::uno::RuntimeException
+ static css::uno::Sequence<sal_Int8> getBytesValue(const OConnection* _pConnection,
+ SQLHANDLE _aStatementHandle,
+ sal_Int32 columnIndex,
+ SQLSMALLINT _fSqlType,
+ bool &_bWasNull,
+ const css::uno::Reference< css::uno::XInterface >& _xInterface);
+ /// @throws css::sdbc::SQLException
+ /// @throws css::uno::RuntimeException
+ static void getValue( OConnection const * _pConnection,
+ SQLHANDLE _aStatementHandle,
+ sal_Int32 columnIndex,
+ SQLSMALLINT _nType,
+ bool &_bWasNull,
+ const css::uno::Reference< css::uno::XInterface >& _xInterface,
+ void* _pValue,
+ SQLLEN _nSize);
+
+ /// @throws css::sdbc::SQLException
+ /// @throws css::uno::RuntimeException
+ static void bindValue( OConnection const * _pConnection,
+ SQLHANDLE _aStatementHandle,
+ sal_Int32 columnIndex,
+ SQLSMALLINT _nType,
+ SQLSMALLINT _nMaxLen,
+ const void* _pValue,
+ void* _pData,
+ SQLLEN *pLen,
+ const css::uno::Reference< css::uno::XInterface >& _xInterface,
+ rtl_TextEncoding _nTextEncoding,
+ bool _bUseOldTimeDate);
+ };
+
+ /// @throws css::sdbc::SQLException
+ /// @throws css::uno::RuntimeException
+ template <class T> void getValue( const OConnection* _pConnection,
+ SQLHANDLE _aStatementHandle,
+ sal_Int32 columnIndex,
+ SQLSMALLINT _nType,
+ bool &_bWasNull,
+ const css::uno::Reference< css::uno::XInterface >& _xInterface,
+ T& _rValue)
+ {
+ OTools::getValue(_pConnection,_aStatementHandle,columnIndex,_nType,_bWasNull,_xInterface,&_rValue,sizeof _rValue);
+ }
+
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */