Refactor ODBC functions code for clarity
Change-Id: I5f3de97fc178b11c82655f65435c637fdff65e99 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171080 Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Tested-by: Jenkins
This commit is contained in:
parent
bb48e26c92
commit
ed2d890d69
20 changed files with 989 additions and 1305 deletions
|
@ -45,8 +45,6 @@ $(eval $(call gb_Library_use_libraries,odbc,\
|
|||
))
|
||||
|
||||
$(eval $(call gb_Library_add_exception_objects,odbc,\
|
||||
connectivity/source/drivers/odbc/ORealDriver \
|
||||
connectivity/source/drivers/odbc/OFunctions \
|
||||
connectivity/source/drivers/odbc/OPreparedStatement \
|
||||
connectivity/source/drivers/odbc/OStatement \
|
||||
connectivity/source/drivers/odbc/OResultSetMetaData \
|
||||
|
|
|
@ -66,20 +66,20 @@ OConnection::~OConnection()
|
|||
|
||||
if (!m_bClosed)
|
||||
{
|
||||
rc = N3SQLDisconnect( m_aConnectionHandle );
|
||||
rc = functions().Disconnect(m_aConnectionHandle);
|
||||
OSL_ENSURE( rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO, "Failure from SQLDisconnect" );
|
||||
}
|
||||
|
||||
rc = N3SQLFreeHandle( SQL_HANDLE_DBC, m_aConnectionHandle );
|
||||
rc = functions().FreeHandle(SQL_HANDLE_DBC, m_aConnectionHandle);
|
||||
OSL_ENSURE( rc == SQL_SUCCESS , "Failure from SQLFreeHandle for connection");
|
||||
|
||||
m_aConnectionHandle = SQL_NULL_HANDLE;
|
||||
}
|
||||
|
||||
oslGenericFunction OConnection::getOdbcFunction(ODBC3SQLFunctionId _nIndex) const
|
||||
const Functions& OConnection::functions() const
|
||||
{
|
||||
OSL_ENSURE(m_xDriver, "OConnection::getOdbcFunction: m_xDriver is null!");
|
||||
return m_xDriver->getOdbcFunction(_nIndex);
|
||||
return m_xDriver->functions();
|
||||
}
|
||||
|
||||
SQLRETURN OConnection::OpenConnection(const OUString& aConnectStr, sal_Int32 nTimeOut, bool bSilent)
|
||||
|
@ -97,14 +97,14 @@ SQLRETURN OConnection::OpenConnection(const OUString& aConnectStr, sal_Int32 nTi
|
|||
memcpy(szConnStrIn, aConStr.getStr(), std::min<sal_Int32>(sal_Int32(2048),aConStr.getLength()));
|
||||
|
||||
#ifndef MACOSX
|
||||
N3SQLSetConnectAttr(m_aConnectionHandle,SQL_ATTR_LOGIN_TIMEOUT,reinterpret_cast<SQLPOINTER>(static_cast<sal_IntPtr>(nTimeOut)),SQL_IS_UINTEGER);
|
||||
functions().SetConnectAttr(m_aConnectionHandle,SQL_ATTR_LOGIN_TIMEOUT,reinterpret_cast<SQLPOINTER>(static_cast<sal_IntPtr>(nTimeOut)),SQL_IS_UINTEGER);
|
||||
#else
|
||||
(void)nTimeOut; /* WaE */
|
||||
#endif
|
||||
|
||||
#ifdef LINUX
|
||||
(void) bSilent;
|
||||
nSQLRETURN = N3SQLDriverConnect(m_aConnectionHandle,
|
||||
nSQLRETURN = functions().DriverConnect(m_aConnectionHandle,
|
||||
nullptr,
|
||||
szConnStrIn,
|
||||
static_cast<SQLSMALLINT>(std::min(sal_Int32(2048),aConStr.getLength())),
|
||||
|
@ -117,7 +117,7 @@ SQLRETURN OConnection::OpenConnection(const OUString& aConnectStr, sal_Int32 nTi
|
|||
#else
|
||||
|
||||
SQLUSMALLINT nSilent = bSilent ? SQL_DRIVER_NOPROMPT : SQL_DRIVER_COMPLETE;
|
||||
nSQLRETURN = N3SQLDriverConnect(m_aConnectionHandle,
|
||||
nSQLRETURN = functions().DriverConnect(m_aConnectionHandle,
|
||||
nullptr,
|
||||
szConnStrIn,
|
||||
static_cast<SQLSMALLINT>(std::min<sal_Int32>(sal_Int32(2048),aConStr.getLength())),
|
||||
|
@ -156,7 +156,7 @@ SQLRETURN OConnection::OpenConnection(const OUString& aConnectStr, sal_Int32 nTi
|
|||
// autocommit is always default
|
||||
|
||||
if (!m_bReadOnly)
|
||||
N3SQLSetConnectAttr(m_aConnectionHandle,SQL_ATTR_AUTOCOMMIT, reinterpret_cast<SQLPOINTER>(SQL_AUTOCOMMIT_ON),SQL_IS_INTEGER);
|
||||
functions().SetConnectAttr(m_aConnectionHandle,SQL_ATTR_AUTOCOMMIT, reinterpret_cast<SQLPOINTER>(SQL_AUTOCOMMIT_ON),SQL_IS_INTEGER);
|
||||
|
||||
return nSQLRETURN;
|
||||
}
|
||||
|
@ -167,7 +167,7 @@ SQLRETURN OConnection::Construct(const OUString& url,const Sequence< PropertyVal
|
|||
m_sURL = url;
|
||||
setConnectionInfo(info);
|
||||
|
||||
N3SQLAllocHandle(SQL_HANDLE_DBC,m_pDriverHandleCopy,&m_aConnectionHandle);
|
||||
functions().AllocHandle(SQL_HANDLE_DBC,m_pDriverHandleCopy,&m_aConnectionHandle);
|
||||
if(m_aConnectionHandle == SQL_NULL_HANDLE)
|
||||
throw SQLException();
|
||||
|
||||
|
@ -301,7 +301,7 @@ OUString SAL_CALL OConnection::nativeSQL( const OUString& sql )
|
|||
OString aSql(OUStringToOString(sql,getTextEncoding()));
|
||||
char pOut[2048];
|
||||
SQLINTEGER nOutLen;
|
||||
OTools::ThrowException(this,N3SQLNativeSql(m_aConnectionHandle,reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(aSql.getStr())),aSql.getLength(),reinterpret_cast<SDB_ODBC_CHAR*>(pOut),sizeof pOut - 1,&nOutLen),m_aConnectionHandle,SQL_HANDLE_DBC,*this);
|
||||
OTools::ThrowException(this,functions().NativeSql(m_aConnectionHandle,reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(aSql.getStr())),aSql.getLength(),reinterpret_cast<SDB_ODBC_CHAR*>(pOut),sizeof pOut - 1,&nOutLen),m_aConnectionHandle,SQL_HANDLE_DBC,*this);
|
||||
return OUString(pOut,nOutLen,getTextEncoding());
|
||||
}
|
||||
|
||||
|
@ -311,7 +311,7 @@ void SAL_CALL OConnection::setAutoCommit( sal_Bool autoCommit )
|
|||
checkDisposed(OConnection_BASE::rBHelper.bDisposed);
|
||||
|
||||
const sal_IntPtr nAutocommit = autoCommit ? SQL_AUTOCOMMIT_ON : SQL_AUTOCOMMIT_OFF;
|
||||
OTools::ThrowException(this,N3SQLSetConnectAttr(m_aConnectionHandle,
|
||||
OTools::ThrowException(this,functions().SetConnectAttr(m_aConnectionHandle,
|
||||
SQL_ATTR_AUTOCOMMIT,
|
||||
reinterpret_cast<SQLPOINTER>(nAutocommit) ,SQL_IS_INTEGER),
|
||||
m_aConnectionHandle,SQL_HANDLE_DBC,*this);
|
||||
|
@ -324,7 +324,7 @@ sal_Bool SAL_CALL OConnection::getAutoCommit( )
|
|||
|
||||
|
||||
sal_uInt32 nOption = 0;
|
||||
OTools::ThrowException(this,N3SQLGetConnectAttr(m_aConnectionHandle,
|
||||
OTools::ThrowException(this,functions().GetConnectAttr(m_aConnectionHandle,
|
||||
SQL_ATTR_AUTOCOMMIT, &nOption,0,nullptr),m_aConnectionHandle,SQL_HANDLE_DBC,*this);
|
||||
return nOption == SQL_AUTOCOMMIT_ON ;
|
||||
}
|
||||
|
@ -335,7 +335,7 @@ void SAL_CALL OConnection::commit( )
|
|||
checkDisposed(OConnection_BASE::rBHelper.bDisposed);
|
||||
|
||||
|
||||
OTools::ThrowException(this,N3SQLEndTran(SQL_HANDLE_DBC,m_aConnectionHandle,SQL_COMMIT),m_aConnectionHandle,SQL_HANDLE_DBC,*this);
|
||||
OTools::ThrowException(this,functions().EndTran(SQL_HANDLE_DBC,m_aConnectionHandle,SQL_COMMIT),m_aConnectionHandle,SQL_HANDLE_DBC,*this);
|
||||
}
|
||||
|
||||
void SAL_CALL OConnection::rollback( )
|
||||
|
@ -344,7 +344,7 @@ void SAL_CALL OConnection::rollback( )
|
|||
checkDisposed(OConnection_BASE::rBHelper.bDisposed);
|
||||
|
||||
|
||||
OTools::ThrowException(this,N3SQLEndTran(SQL_HANDLE_DBC,m_aConnectionHandle,SQL_ROLLBACK),m_aConnectionHandle,SQL_HANDLE_DBC,*this);
|
||||
OTools::ThrowException(this,functions().EndTran(SQL_HANDLE_DBC,m_aConnectionHandle,SQL_ROLLBACK),m_aConnectionHandle,SQL_HANDLE_DBC,*this);
|
||||
}
|
||||
|
||||
sal_Bool SAL_CALL OConnection::isClosed( )
|
||||
|
@ -376,7 +376,7 @@ void SAL_CALL OConnection::setReadOnly( sal_Bool readOnly )
|
|||
|
||||
|
||||
OTools::ThrowException(this,
|
||||
N3SQLSetConnectAttr(m_aConnectionHandle,SQL_ATTR_ACCESS_MODE,reinterpret_cast< SQLPOINTER >( readOnly ),SQL_IS_INTEGER),
|
||||
functions().SetConnectAttr(m_aConnectionHandle,SQL_ATTR_ACCESS_MODE,reinterpret_cast< SQLPOINTER >( readOnly ),SQL_IS_INTEGER),
|
||||
m_aConnectionHandle,SQL_HANDLE_DBC,*this);
|
||||
}
|
||||
|
||||
|
@ -394,7 +394,7 @@ void SAL_CALL OConnection::setCatalog( const OUString& catalog )
|
|||
|
||||
OString aCat(OUStringToOString(catalog,getTextEncoding()));
|
||||
OTools::ThrowException(this,
|
||||
N3SQLSetConnectAttr(m_aConnectionHandle,SQL_ATTR_CURRENT_CATALOG,const_cast<char *>(aCat.getStr()),SQL_NTS),
|
||||
functions().SetConnectAttr(m_aConnectionHandle,SQL_ATTR_CURRENT_CATALOG,const_cast<char *>(aCat.getStr()),SQL_NTS),
|
||||
m_aConnectionHandle,SQL_HANDLE_DBC,*this);
|
||||
}
|
||||
|
||||
|
@ -407,7 +407,7 @@ OUString SAL_CALL OConnection::getCatalog( )
|
|||
SQLINTEGER nValueLen;
|
||||
char pCat[1024];
|
||||
OTools::ThrowException(this,
|
||||
N3SQLGetConnectAttr(m_aConnectionHandle,SQL_ATTR_CURRENT_CATALOG,pCat,(sizeof pCat)-1,&nValueLen),
|
||||
functions().GetConnectAttr(m_aConnectionHandle,SQL_ATTR_CURRENT_CATALOG,pCat,(sizeof pCat)-1,&nValueLen),
|
||||
m_aConnectionHandle,SQL_HANDLE_DBC,*this);
|
||||
|
||||
return OUString(pCat,nValueLen,getTextEncoding());
|
||||
|
@ -419,7 +419,7 @@ void SAL_CALL OConnection::setTransactionIsolation( sal_Int32 level )
|
|||
checkDisposed(OConnection_BASE::rBHelper.bDisposed);
|
||||
|
||||
|
||||
OTools::ThrowException(this,N3SQLSetConnectAttr(m_aConnectionHandle,
|
||||
OTools::ThrowException(this,functions().SetConnectAttr(m_aConnectionHandle,
|
||||
SQL_ATTR_TXN_ISOLATION,
|
||||
reinterpret_cast<SQLPOINTER>(static_cast<sal_IntPtr>(level)),SQL_IS_INTEGER),
|
||||
m_aConnectionHandle,SQL_HANDLE_DBC,*this);
|
||||
|
@ -434,7 +434,7 @@ sal_Int32 SAL_CALL OConnection::getTransactionIsolation( )
|
|||
sal_Int32 nTxn = 0;
|
||||
SQLINTEGER nValueLen;
|
||||
OTools::ThrowException(this,
|
||||
N3SQLGetConnectAttr(m_aConnectionHandle,SQL_ATTR_TXN_ISOLATION,&nTxn,sizeof nTxn,&nValueLen),
|
||||
functions().GetConnectAttr(m_aConnectionHandle,SQL_ATTR_TXN_ISOLATION,&nTxn,sizeof nTxn,&nValueLen),
|
||||
m_aConnectionHandle,SQL_HANDLE_DBC,*this);
|
||||
return nTxn;
|
||||
}
|
||||
|
@ -486,7 +486,7 @@ void OConnection::disposing()
|
|||
m_aConnections.clear();
|
||||
|
||||
if(!m_bClosed)
|
||||
N3SQLDisconnect(m_aConnectionHandle);
|
||||
functions().Disconnect(m_aConnectionHandle);
|
||||
m_bClosed = true;
|
||||
}
|
||||
|
||||
|
@ -510,7 +510,7 @@ SQLHANDLE OConnection::createStatementHandle()
|
|||
}
|
||||
|
||||
SQLHANDLE aStatementHandle = SQL_NULL_HANDLE;
|
||||
N3SQLAllocHandle(SQL_HANDLE_STMT,xConnectionTemp->getConnection(),&aStatementHandle);
|
||||
functions().AllocHandle(SQL_HANDLE_STMT,xConnectionTemp->getConnection(),&aStatementHandle);
|
||||
++m_nStatementCount;
|
||||
if(bNew)
|
||||
m_aConnections.emplace(aStatementHandle,xConnectionTemp);
|
||||
|
@ -526,10 +526,10 @@ void OConnection::freeStatementHandle(SQLHANDLE& _pHandle)
|
|||
|
||||
auto aFind = m_aConnections.find(_pHandle);
|
||||
|
||||
N3SQLFreeStmt(_pHandle,SQL_RESET_PARAMS);
|
||||
N3SQLFreeStmt(_pHandle,SQL_UNBIND);
|
||||
N3SQLFreeStmt(_pHandle,SQL_CLOSE);
|
||||
N3SQLFreeHandle(SQL_HANDLE_STMT,_pHandle);
|
||||
functions().FreeStmt(_pHandle,SQL_RESET_PARAMS);
|
||||
functions().FreeStmt(_pHandle,SQL_UNBIND);
|
||||
functions().FreeStmt(_pHandle,SQL_CLOSE);
|
||||
functions().FreeHandle(SQL_HANDLE_STMT,_pHandle);
|
||||
|
||||
_pHandle = SQL_NULL_HANDLE;
|
||||
|
||||
|
|
|
@ -495,7 +495,7 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::first( )
|
|||
|
||||
m_bEOF = false;
|
||||
|
||||
m_nCurrentFetchState = N3SQLFetchScroll(m_aStatementHandle,SQL_FETCH_FIRST,0);
|
||||
m_nCurrentFetchState = functions().FetchScroll(m_aStatementHandle,SQL_FETCH_FIRST,0);
|
||||
OTools::ThrowException(m_pConnection.get(),m_nCurrentFetchState,m_aStatementHandle,SQL_HANDLE_STMT,*this);
|
||||
bool bRet = ( m_nCurrentFetchState == SQL_SUCCESS || m_nCurrentFetchState == SQL_SUCCESS_WITH_INFO );
|
||||
if( bRet )
|
||||
|
@ -510,7 +510,7 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::last( )
|
|||
::osl::MutexGuard aGuard( m_aMutex );
|
||||
|
||||
|
||||
m_nCurrentFetchState = N3SQLFetchScroll(m_aStatementHandle,SQL_FETCH_LAST,0);
|
||||
m_nCurrentFetchState = functions().FetchScroll(m_aStatementHandle,SQL_FETCH_LAST,0);
|
||||
OTools::ThrowException(m_pConnection.get(),m_nCurrentFetchState,m_aStatementHandle,SQL_HANDLE_STMT,*this);
|
||||
// here I know definitely that I stand on the last record
|
||||
bool bRet = ( m_nCurrentFetchState == SQL_SUCCESS || m_nCurrentFetchState == SQL_SUCCESS_WITH_INFO );
|
||||
|
@ -527,7 +527,7 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::absolute( sal_Int32 row )
|
|||
|
||||
m_bEOF = false;
|
||||
|
||||
m_nCurrentFetchState = N3SQLFetchScroll(m_aStatementHandle,SQL_FETCH_ABSOLUTE,row);
|
||||
m_nCurrentFetchState = functions().FetchScroll(m_aStatementHandle,SQL_FETCH_ABSOLUTE,row);
|
||||
OTools::ThrowException(m_pConnection.get(),m_nCurrentFetchState,m_aStatementHandle,SQL_HANDLE_STMT,*this);
|
||||
bool bRet = m_nCurrentFetchState == SQL_SUCCESS || m_nCurrentFetchState == SQL_SUCCESS_WITH_INFO;
|
||||
if(bRet)
|
||||
|
@ -543,7 +543,7 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::relative( sal_Int32 row )
|
|||
|
||||
m_bEOF = false;
|
||||
|
||||
m_nCurrentFetchState = N3SQLFetchScroll(m_aStatementHandle,SQL_FETCH_RELATIVE,row);
|
||||
m_nCurrentFetchState = functions().FetchScroll(m_aStatementHandle,SQL_FETCH_RELATIVE,row);
|
||||
OTools::ThrowException(m_pConnection.get(),m_nCurrentFetchState,m_aStatementHandle,SQL_HANDLE_STMT,*this);
|
||||
bool bRet = m_nCurrentFetchState == SQL_SUCCESS || m_nCurrentFetchState == SQL_SUCCESS_WITH_INFO;
|
||||
if(bRet)
|
||||
|
@ -559,7 +559,7 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::previous( )
|
|||
|
||||
m_bEOF = false;
|
||||
|
||||
m_nCurrentFetchState = N3SQLFetchScroll(m_aStatementHandle,SQL_FETCH_PRIOR,0);
|
||||
m_nCurrentFetchState = functions().FetchScroll(m_aStatementHandle,SQL_FETCH_PRIOR,0);
|
||||
OTools::ThrowException(m_pConnection.get(),m_nCurrentFetchState,m_aStatementHandle,SQL_HANDLE_STMT,*this);
|
||||
bool bRet = m_nCurrentFetchState == SQL_SUCCESS || m_nCurrentFetchState == SQL_SUCCESS_WITH_INFO;
|
||||
if(bRet)
|
||||
|
@ -625,8 +625,8 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::next( )
|
|||
m_bEOF = false;
|
||||
|
||||
SQLRETURN nOldFetchStatus = m_nCurrentFetchState;
|
||||
// m_nCurrentFetchState = N3SQLFetchScroll(m_aStatementHandle,SQL_FETCH_NEXT,0);
|
||||
m_nCurrentFetchState = N3SQLFetch(m_aStatementHandle);
|
||||
// m_nCurrentFetchState = functions().FetchScroll(m_aStatementHandle,SQL_FETCH_NEXT,0);
|
||||
m_nCurrentFetchState = functions().Fetch(m_aStatementHandle);
|
||||
OTools::ThrowException(m_pConnection.get(),m_nCurrentFetchState,m_aStatementHandle,SQL_HANDLE_STMT,*this);
|
||||
bool bRet = m_nCurrentFetchState == SQL_SUCCESS || m_nCurrentFetchState == SQL_SUCCESS_WITH_INFO;
|
||||
if(bRet || ( m_nCurrentFetchState == SQL_NO_DATA && nOldFetchStatus != SQL_NO_DATA ) )
|
||||
|
@ -661,7 +661,7 @@ void SAL_CALL ODatabaseMetaDataResultSet::cancel( )
|
|||
::osl::MutexGuard aGuard( m_aMutex );
|
||||
|
||||
|
||||
N3SQLCancel(m_aStatementHandle);
|
||||
functions().Cancel(m_aStatementHandle);
|
||||
}
|
||||
|
||||
void SAL_CALL ODatabaseMetaDataResultSet::clearWarnings( )
|
||||
|
@ -826,7 +826,7 @@ void ODatabaseMetaDataResultSet::openTypeInfo()
|
|||
|
||||
m_aValueRange[2] = aMap;
|
||||
|
||||
OTools::ThrowException(m_pConnection.get(),N3SQLGetTypeInfo(m_aStatementHandle, SQL_ALL_TYPES),m_aStatementHandle,SQL_HANDLE_STMT,*this);
|
||||
OTools::ThrowException(m_pConnection.get(),functions().GetTypeInfo(m_aStatementHandle, SQL_ALL_TYPES),m_aStatementHandle,SQL_HANDLE_STMT,*this);
|
||||
checkColumnCount();
|
||||
}
|
||||
|
||||
|
@ -868,7 +868,7 @@ void ODatabaseMetaDataResultSet::openTables(const Any& catalog, const OUString&
|
|||
else
|
||||
pCOL = SQL_ALL_TABLE_TYPES;
|
||||
|
||||
SQLRETURN nRetcode = N3SQLTables(m_aStatementHandle,
|
||||
SQLRETURN nRetcode = functions().Tables(m_aStatementHandle,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKQ)), (catalog.hasValue() && !aPKQ.isEmpty()) ? SQL_NTS : 0,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKO)), pPKO ? SQL_NTS : 0,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKN)), SQL_NTS,
|
||||
|
@ -880,7 +880,7 @@ void ODatabaseMetaDataResultSet::openTables(const Any& catalog, const OUString&
|
|||
|
||||
void ODatabaseMetaDataResultSet::openTablesTypes( )
|
||||
{
|
||||
SQLRETURN nRetcode = N3SQLTables(m_aStatementHandle,
|
||||
SQLRETURN nRetcode = functions().Tables(m_aStatementHandle,
|
||||
nullptr,0,
|
||||
nullptr,0,
|
||||
nullptr,0,
|
||||
|
@ -896,7 +896,7 @@ void ODatabaseMetaDataResultSet::openTablesTypes( )
|
|||
|
||||
void ODatabaseMetaDataResultSet::openCatalogs()
|
||||
{
|
||||
SQLRETURN nRetcode = N3SQLTables(m_aStatementHandle,
|
||||
SQLRETURN nRetcode = functions().Tables(m_aStatementHandle,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(SQL_ALL_CATALOGS)),SQL_NTS,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>("")),SQL_NTS,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>("")),SQL_NTS,
|
||||
|
@ -913,7 +913,7 @@ void ODatabaseMetaDataResultSet::openCatalogs()
|
|||
|
||||
void ODatabaseMetaDataResultSet::openSchemas()
|
||||
{
|
||||
SQLRETURN nRetcode = N3SQLTables(m_aStatementHandle,
|
||||
SQLRETURN nRetcode = functions().Tables(m_aStatementHandle,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>("")),SQL_NTS,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(SQL_ALL_SCHEMAS)),SQL_NTS,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>("")),SQL_NTS,
|
||||
|
@ -952,7 +952,7 @@ void ODatabaseMetaDataResultSet::openColumnPrivileges( const Any& catalog, cons
|
|||
*pCOL = aCOL.getStr();
|
||||
|
||||
|
||||
SQLRETURN nRetcode = N3SQLColumnPrivileges(m_aStatementHandle,
|
||||
SQLRETURN nRetcode = functions().ColumnPrivileges(m_aStatementHandle,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKQ)), (catalog.hasValue() && !aPKQ.isEmpty()) ? SQL_NTS : 0,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKO)), pPKO ? SQL_NTS : 0 ,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKN)), SQL_NTS,
|
||||
|
@ -985,7 +985,7 @@ void ODatabaseMetaDataResultSet::openColumns( const Any& catalog,
|
|||
*pCOL = aCOL.getStr();
|
||||
|
||||
|
||||
SQLRETURN nRetcode = N3SQLColumns(m_aStatementHandle,
|
||||
SQLRETURN nRetcode = functions().Columns(m_aStatementHandle,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKQ)), (catalog.hasValue() && !aPKQ.isEmpty()) ? SQL_NTS : 0,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKO)), pPKO ? SQL_NTS : 0,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKN)), SQL_NTS,
|
||||
|
@ -1052,7 +1052,7 @@ void ODatabaseMetaDataResultSet::openProcedureColumns( const Any& catalog,
|
|||
*pCOL = aCOL.getStr();
|
||||
|
||||
|
||||
SQLRETURN nRetcode = N3SQLProcedureColumns(m_aStatementHandle,
|
||||
SQLRETURN nRetcode = functions().ProcedureColumns(m_aStatementHandle,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKQ)), (catalog.hasValue() && !aPKQ.isEmpty()) ? SQL_NTS : 0,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKO)), pPKO ? SQL_NTS : 0 ,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKN)), SQL_NTS,
|
||||
|
@ -1084,7 +1084,7 @@ void ODatabaseMetaDataResultSet::openProcedures(const Any& catalog, const OUStri
|
|||
*pPKN = aPKN.getStr();
|
||||
|
||||
|
||||
SQLRETURN nRetcode = N3SQLProcedures(m_aStatementHandle,
|
||||
SQLRETURN nRetcode = functions().Procedures(m_aStatementHandle,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKQ)), (catalog.hasValue() && !aPKQ.isEmpty()) ? SQL_NTS : 0,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKO)), pPKO ? SQL_NTS : 0 ,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKN)), SQL_NTS);
|
||||
|
@ -1123,7 +1123,7 @@ void ODatabaseMetaDataResultSet::openSpecialColumns(bool _bRowVer,const Any& cat
|
|||
*pPKN = aPKN.getStr();
|
||||
|
||||
|
||||
SQLRETURN nRetcode = N3SQLSpecialColumns(m_aStatementHandle,_bRowVer ? SQL_ROWVER : SQL_BEST_ROWID,
|
||||
SQLRETURN nRetcode = functions().SpecialColumns(m_aStatementHandle,_bRowVer ? SQL_ROWVER : SQL_BEST_ROWID,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKQ)), (catalog.hasValue() && !aPKQ.isEmpty()) ? SQL_NTS : 0,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKO)), pPKO ? SQL_NTS : 0 ,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKN)), SQL_NTS,
|
||||
|
@ -1183,7 +1183,7 @@ void ODatabaseMetaDataResultSet::openForeignKeys( const Any& catalog, const OUSt
|
|||
pFKN = aFKN.getStr();
|
||||
}
|
||||
|
||||
SQLRETURN nRetcode = N3SQLForeignKeys(m_aStatementHandle,
|
||||
SQLRETURN nRetcode = functions().ForeignKeys(m_aStatementHandle,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKQ)), (catalog.hasValue() && !aPKQ.isEmpty()) ? SQL_NTS : 0,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKO)), pPKO ? SQL_NTS : 0,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKN)), pPKN ? SQL_NTS : 0,
|
||||
|
@ -1230,7 +1230,7 @@ void ODatabaseMetaDataResultSet::openPrimaryKeys(const Any& catalog, const OUStr
|
|||
*pPKN = aPKN.getStr();
|
||||
|
||||
|
||||
SQLRETURN nRetcode = N3SQLPrimaryKeys(m_aStatementHandle,
|
||||
SQLRETURN nRetcode = functions().PrimaryKeys(m_aStatementHandle,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKQ)), (catalog.hasValue() && !aPKQ.isEmpty()) ? SQL_NTS : 0,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKO)), pPKO ? SQL_NTS : 0 ,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKN)), SQL_NTS);
|
||||
|
@ -1259,7 +1259,7 @@ void ODatabaseMetaDataResultSet::openTablePrivileges(const Any& catalog, const O
|
|||
*pPKO = pSchemaPat && !pSchemaPat->isEmpty() && !aPKO.isEmpty() ? aPKO.getStr() : nullptr,
|
||||
*pPKN = aPKN.getStr();
|
||||
|
||||
SQLRETURN nRetcode = N3SQLTablePrivileges(m_aStatementHandle,
|
||||
SQLRETURN nRetcode = functions().TablePrivileges(m_aStatementHandle,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKQ)), (catalog.hasValue() && !aPKQ.isEmpty()) ? SQL_NTS : 0,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKO)), pPKO ? SQL_NTS : 0 ,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKN)), SQL_NTS);
|
||||
|
@ -1288,7 +1288,7 @@ void ODatabaseMetaDataResultSet::openIndexInfo( const Any& catalog, const OUStri
|
|||
*pPKO = pSchemaPat && !pSchemaPat->isEmpty() && !aPKO.isEmpty() ? aPKO.getStr() : nullptr,
|
||||
*pPKN = aPKN.getStr();
|
||||
|
||||
SQLRETURN nRetcode = N3SQLStatistics(m_aStatementHandle,
|
||||
SQLRETURN nRetcode = functions().Statistics(m_aStatementHandle,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKQ)), (catalog.hasValue() && !aPKQ.isEmpty()) ? SQL_NTS : 0,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKO)), pPKO ? SQL_NTS : 0 ,
|
||||
reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKN)), SQL_NTS,
|
||||
|
@ -1301,7 +1301,7 @@ void ODatabaseMetaDataResultSet::openIndexInfo( const Any& catalog, const OUStri
|
|||
void ODatabaseMetaDataResultSet::checkColumnCount()
|
||||
{
|
||||
sal_Int16 nNumResultCols=0;
|
||||
OTools::ThrowException(m_pConnection.get(),N3SQLNumResultCols(m_aStatementHandle,&nNumResultCols),m_aStatementHandle,SQL_HANDLE_STMT,*this);
|
||||
OTools::ThrowException(m_pConnection.get(),functions().NumResultCols(m_aStatementHandle,&nNumResultCols),m_aStatementHandle,SQL_HANDLE_STMT,*this);
|
||||
m_nDriverColumnCount = nNumResultCols;
|
||||
}
|
||||
|
||||
|
|
|
@ -17,13 +17,17 @@
|
|||
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
*/
|
||||
|
||||
#include <odbc/ODriver.hxx>
|
||||
#include <sal/config.h>
|
||||
|
||||
#include <odbc/OConnection.hxx>
|
||||
#include <odbc/OTools.hxx>
|
||||
#include <odbc/ODriver.hxx>
|
||||
#include <resource/sharedresources.hxx>
|
||||
#include <strings.hrc>
|
||||
|
||||
#include <connectivity/dbexception.hxx>
|
||||
#include <cppuhelper/supportsservice.hxx>
|
||||
#include <strings.hrc>
|
||||
#include <resource/sharedresources.hxx>
|
||||
#include <osl/module.h>
|
||||
|
||||
#include <utility>
|
||||
|
||||
using namespace connectivity::odbc;
|
||||
|
@ -35,7 +39,6 @@ using namespace com::sun::star::sdbc;
|
|||
ODBCDriver::ODBCDriver(css::uno::Reference< css::uno::XComponentContext > _xContext)
|
||||
:ODriver_BASE(m_aMutex)
|
||||
,m_xContext(std::move(_xContext))
|
||||
,m_pDriverHandle(SQL_NULL_HANDLE)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -82,13 +85,7 @@ Reference< XConnection > SAL_CALL ODBCDriver::connect( const OUString& url, cons
|
|||
if ( ! acceptsURL(url) )
|
||||
return nullptr;
|
||||
|
||||
if(!m_pDriverHandle)
|
||||
{
|
||||
OUString aPath;
|
||||
if(!EnvironmentHandle(aPath))
|
||||
throw SQLException(aPath,*this,OUString(),1000,Any());
|
||||
}
|
||||
rtl::Reference<OConnection> pCon = new OConnection(m_pDriverHandle,this);
|
||||
rtl::Reference<OConnection> pCon = new OConnection(EnvironmentHandle(), this);
|
||||
pCon->Construct(url,info);
|
||||
m_xConnections.push_back(WeakReferenceHelper(*pCon));
|
||||
|
||||
|
@ -188,5 +185,526 @@ sal_Int32 SAL_CALL ODBCDriver::getMinorVersion( )
|
|||
return 0;
|
||||
}
|
||||
|
||||
// Implib definitions for ODBC-DLL/shared library:
|
||||
|
||||
namespace
|
||||
{
|
||||
constinit oslGenericFunction pODBC3SQLFunctions[static_cast<size_t>(ODBC3SQLFunctionId::LAST)]{};
|
||||
|
||||
bool LoadFunctions(oslModule pODBCso)
|
||||
{
|
||||
auto load = [pODBCso](ODBC3SQLFunctionId id, const OUString& name)
|
||||
{
|
||||
assert(id > ODBC3SQLFunctionId::FIRST && id < ODBC3SQLFunctionId::LAST);
|
||||
auto& rpFunc = pODBC3SQLFunctions[static_cast<size_t>(id)];
|
||||
assert(rpFunc == nullptr);
|
||||
rpFunc = osl_getFunctionSymbol(pODBCso, name.pData);
|
||||
return rpFunc != nullptr;
|
||||
};
|
||||
|
||||
return load(ODBC3SQLFunctionId::AllocHandle, u"SQLAllocHandle"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::DriverConnect, u"SQLDriverConnect"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::GetInfo, u"SQLGetInfo"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::GetFunctions, u"SQLGetFunctions"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::GetTypeInfo, u"SQLGetTypeInfo"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::SetConnectAttr, u"SQLSetConnectAttr"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::GetConnectAttr, u"SQLGetConnectAttr"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::SetEnvAttr, u"SQLSetEnvAttr"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::GetEnvAttr, u"SQLGetEnvAttr"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::SetStmtAttr, u"SQLSetStmtAttr"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::GetStmtAttr, u"SQLGetStmtAttr"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::Prepare, u"SQLPrepare"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::BindParameter, u"SQLBindParameter"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::SetCursorName, u"SQLSetCursorName"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::Execute, u"SQLExecute"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::ExecDirect, u"SQLExecDirect"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::DescribeParam, u"SQLDescribeParam"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::NumParams, u"SQLNumParams"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::ParamData, u"SQLParamData"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::PutData, u"SQLPutData"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::RowCount, u"SQLRowCount"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::NumResultCols, u"SQLNumResultCols"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::ColAttribute, u"SQLColAttribute"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::BindCol, u"SQLBindCol"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::Fetch, u"SQLFetch"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::FetchScroll, u"SQLFetchScroll"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::GetData, u"SQLGetData"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::SetPos, u"SQLSetPos"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::BulkOperations, u"SQLBulkOperations"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::MoreResults, u"SQLMoreResults"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::GetDiagRec, u"SQLGetDiagRec"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::ColumnPrivileges, u"SQLColumnPrivileges"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::Columns, u"SQLColumns"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::ForeignKeys, u"SQLForeignKeys"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::PrimaryKeys, u"SQLPrimaryKeys"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::ProcedureColumns, u"SQLProcedureColumns"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::Procedures, u"SQLProcedures"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::SpecialColumns, u"SQLSpecialColumns"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::Statistics, u"SQLStatistics"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::TablePrivileges, u"SQLTablePrivileges"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::Tables, u"SQLTables"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::FreeStmt, u"SQLFreeStmt"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::CloseCursor, u"SQLCloseCursor"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::Cancel, u"SQLCancel"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::EndTran, u"SQLEndTran"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::Disconnect, u"SQLDisconnect"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::FreeHandle, u"SQLFreeHandle"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::GetCursorName, u"SQLGetCursorName"_ustr)
|
||||
&& load(ODBC3SQLFunctionId::NativeSql, u"SQLNativeSql"_ustr);
|
||||
}
|
||||
|
||||
// Take care of Dynamically loading of the DLL/shared lib and Addresses:
|
||||
// Returns sal_True at success
|
||||
bool LoadLibrary_ODBC3(OUString &_rPath)
|
||||
{
|
||||
static bool bLoaded = false;
|
||||
static oslModule pODBCso = nullptr;
|
||||
|
||||
if (bLoaded)
|
||||
return true;
|
||||
#ifdef DISABLE_DYNLOADING
|
||||
(void)_rPath;
|
||||
#else
|
||||
#ifdef _WIN32
|
||||
_rPath = "ODBC32.DLL";
|
||||
#endif
|
||||
#ifdef UNX
|
||||
#ifdef MACOSX
|
||||
_rPath = "libiodbc.dylib";
|
||||
#else
|
||||
_rPath = "libodbc.so.2";
|
||||
pODBCso = osl_loadModule( _rPath.pData,SAL_LOADMODULE_NOW );
|
||||
if ( !pODBCso )
|
||||
{
|
||||
_rPath = "libodbc.so.1";
|
||||
pODBCso = osl_loadModule( _rPath.pData,SAL_LOADMODULE_NOW );
|
||||
}
|
||||
if ( !pODBCso )
|
||||
_rPath = "libodbc.so";
|
||||
|
||||
#endif /* MACOSX */
|
||||
#endif
|
||||
|
||||
if ( !pODBCso )
|
||||
pODBCso = osl_loadModule( _rPath.pData,SAL_LOADMODULE_NOW );
|
||||
#endif // DISABLE_DYNLOADING
|
||||
if( !pODBCso)
|
||||
return false;
|
||||
|
||||
bLoaded = LoadFunctions(pODBCso);
|
||||
return bLoaded;
|
||||
}
|
||||
|
||||
class ORealOdbcDriver : public connectivity::odbc::ODBCDriver, public connectivity::odbc::Functions
|
||||
{
|
||||
public:
|
||||
explicit ORealOdbcDriver(const css::uno::Reference<css::uno::XComponentContext>& _rxContext)
|
||||
: ODBCDriver(_rxContext)
|
||||
{
|
||||
}
|
||||
const Functions& functions() const override { return *this; }
|
||||
|
||||
// Functions
|
||||
|
||||
bool has(ODBC3SQLFunctionId id) const override
|
||||
{
|
||||
assert(id > ODBC3SQLFunctionId::FIRST && id < ODBC3SQLFunctionId::LAST);
|
||||
return pODBC3SQLFunctions[static_cast<size_t>(id)] != nullptr;
|
||||
}
|
||||
|
||||
SQLRETURN AllocHandle(SQLSMALLINT HandleType, SQLHANDLE InputHandle,
|
||||
SQLHANDLE* OutputHandlePtr) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::AllocHandle, HandleType, InputHandle, OutputHandlePtr);
|
||||
}
|
||||
|
||||
SQLRETURN DriverConnect(SQLHDBC ConnectionHandle, HWND WindowHandle,
|
||||
SQLCHAR* InConnectionString, SQLSMALLINT StringLength1,
|
||||
SQLCHAR* OutConnectionString, SQLSMALLINT BufferLength,
|
||||
SQLSMALLINT* StringLength2Ptr,
|
||||
SQLUSMALLINT DriverCompletion) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::DriverConnect, ConnectionHandle, WindowHandle,
|
||||
InConnectionString, StringLength1, OutConnectionString, BufferLength,
|
||||
StringLength2Ptr, DriverCompletion);
|
||||
}
|
||||
|
||||
SQLRETURN GetInfo(SQLHDBC ConnectionHandle, SQLUSMALLINT InfoType, SQLPOINTER InfoValuePtr,
|
||||
SQLSMALLINT BufferLength, SQLSMALLINT* StringLengthPtr) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::GetInfo, ConnectionHandle, InfoType, InfoValuePtr,
|
||||
BufferLength, StringLengthPtr);
|
||||
}
|
||||
|
||||
SQLRETURN GetFunctions(SQLHDBC ConnectionHandle, SQLUSMALLINT FunctionId,
|
||||
SQLUSMALLINT* SupportedPtr) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::GetFunctions, ConnectionHandle, FunctionId,
|
||||
SupportedPtr);
|
||||
}
|
||||
|
||||
SQLRETURN GetTypeInfo(SQLHSTMT StatementHandle, SQLSMALLINT DataType) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::GetTypeInfo, StatementHandle, DataType);
|
||||
}
|
||||
|
||||
SQLRETURN SetConnectAttr(SQLHDBC ConnectionHandle, SQLINTEGER Attribute, SQLPOINTER ValuePtr,
|
||||
SQLINTEGER StringLength) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::SetConnectAttr, ConnectionHandle, Attribute, ValuePtr,
|
||||
StringLength);
|
||||
}
|
||||
|
||||
SQLRETURN GetConnectAttr(SQLHDBC ConnectionHandle, SQLINTEGER Attribute, SQLPOINTER ValuePtr,
|
||||
SQLINTEGER BufferLength, SQLINTEGER* StringLength) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::GetConnectAttr, ConnectionHandle, Attribute, ValuePtr,
|
||||
BufferLength, StringLength);
|
||||
}
|
||||
|
||||
SQLRETURN SetEnvAttr(SQLHENV EnvironmentHandle, SQLINTEGER Attribute, SQLPOINTER ValuePtr,
|
||||
SQLINTEGER StringLength) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::SetEnvAttr, EnvironmentHandle, Attribute, ValuePtr,
|
||||
StringLength);
|
||||
}
|
||||
|
||||
SQLRETURN GetEnvAttr(SQLHENV EnvironmentHandle, SQLINTEGER Attribute, SQLPOINTER ValuePtr,
|
||||
SQLINTEGER BufferLength, SQLINTEGER* StringLength) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::GetEnvAttr, EnvironmentHandle, Attribute, ValuePtr,
|
||||
BufferLength, StringLength);
|
||||
}
|
||||
|
||||
SQLRETURN SetStmtAttr(SQLHSTMT StatementHandle, SQLINTEGER Attribute, SQLPOINTER ValuePtr,
|
||||
SQLINTEGER StringLength) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::SetStmtAttr, StatementHandle, Attribute, ValuePtr,
|
||||
StringLength);
|
||||
}
|
||||
|
||||
SQLRETURN GetStmtAttr(SQLHSTMT StatementHandle, SQLINTEGER Attribute, SQLPOINTER ValuePtr,
|
||||
SQLINTEGER BufferLength, SQLINTEGER* StringLength) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::GetStmtAttr, StatementHandle, Attribute, ValuePtr,
|
||||
BufferLength, StringLength);
|
||||
}
|
||||
|
||||
SQLRETURN Prepare(SQLHSTMT StatementHandle, SQLCHAR* StatementText,
|
||||
SQLINTEGER TextLength) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::Prepare, StatementHandle, StatementText, TextLength);
|
||||
}
|
||||
|
||||
SQLRETURN BindParameter(SQLHSTMT StatementHandle, SQLUSMALLINT ParameterNumber,
|
||||
SQLSMALLINT InputOutputType, SQLSMALLINT ValueType,
|
||||
SQLSMALLINT ParameterType, SQLULEN ColumnSize,
|
||||
SQLSMALLINT DecimalDigits, SQLPOINTER ParameterValuePtr,
|
||||
SQLLEN BufferLength, SQLLEN* StrLen_or_IndPtr) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::BindParameter, StatementHandle, ParameterNumber,
|
||||
InputOutputType, ValueType, ParameterType, ColumnSize, DecimalDigits,
|
||||
ParameterValuePtr, BufferLength, StrLen_or_IndPtr);
|
||||
}
|
||||
|
||||
SQLRETURN SetCursorName(SQLHSTMT StatementHandle, SQLCHAR* CursorName,
|
||||
SQLSMALLINT NameLength) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::SetCursorName, StatementHandle, CursorName, NameLength);
|
||||
}
|
||||
|
||||
SQLRETURN Execute(SQLHSTMT StatementHandle) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::Execute, StatementHandle);
|
||||
}
|
||||
|
||||
SQLRETURN ExecDirect(SQLHSTMT StatementHandle, SQLCHAR* StatementText,
|
||||
SQLINTEGER TextLength) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::ExecDirect, StatementHandle, StatementText, TextLength);
|
||||
}
|
||||
|
||||
SQLRETURN DescribeParam(SQLHSTMT StatementHandle, SQLUSMALLINT ParameterNumber,
|
||||
SQLSMALLINT* DataTypePtr, SQLULEN* ParameterSizePtr,
|
||||
SQLSMALLINT* DecimalDigitsPtr, SQLSMALLINT* NullablePtr) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::DescribeParam, StatementHandle, ParameterNumber,
|
||||
DataTypePtr, ParameterSizePtr, DecimalDigitsPtr, NullablePtr);
|
||||
}
|
||||
|
||||
SQLRETURN NumParams(SQLHSTMT StatementHandle, SQLSMALLINT* ParameterCountPtr) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::NumParams, StatementHandle, ParameterCountPtr);
|
||||
}
|
||||
|
||||
SQLRETURN ParamData(SQLHSTMT StatementHandle, SQLPOINTER* ValuePtrPtr) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::ParamData, StatementHandle, ValuePtrPtr);
|
||||
}
|
||||
|
||||
SQLRETURN PutData(SQLHSTMT StatementHandle, SQLPOINTER DataPtr,
|
||||
SQLLEN StrLen_or_Ind) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::PutData, StatementHandle, DataPtr, StrLen_or_Ind);
|
||||
}
|
||||
|
||||
SQLRETURN RowCount(SQLHSTMT StatementHandle, SQLLEN* RowCountPtr) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::RowCount, StatementHandle, RowCountPtr);
|
||||
}
|
||||
|
||||
SQLRETURN NumResultCols(SQLHSTMT StatementHandle, SQLSMALLINT* ColumnCountPtr) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::NumResultCols, StatementHandle, ColumnCountPtr);
|
||||
}
|
||||
|
||||
SQLRETURN ColAttribute(SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber,
|
||||
SQLUSMALLINT FieldIdentifier, SQLPOINTER CharacterAttributePtr,
|
||||
SQLSMALLINT BufferLength, SQLSMALLINT* StringLengthPtr,
|
||||
SQLLEN* NumericAttributePtr) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::ColAttribute, StatementHandle, ColumnNumber,
|
||||
FieldIdentifier, CharacterAttributePtr, BufferLength, StringLengthPtr,
|
||||
NumericAttributePtr);
|
||||
}
|
||||
|
||||
SQLRETURN BindCol(SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
|
||||
SQLPOINTER TargetValuePtr, SQLLEN BufferLength,
|
||||
SQLLEN* StrLen_or_IndPtr) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::BindCol, StatementHandle, ColumnNumber, TargetType,
|
||||
TargetValuePtr, BufferLength, StrLen_or_IndPtr);
|
||||
}
|
||||
|
||||
SQLRETURN Fetch(SQLHSTMT StatementHandle) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::Fetch, StatementHandle);
|
||||
}
|
||||
|
||||
SQLRETURN FetchScroll(SQLHSTMT StatementHandle, SQLSMALLINT FetchOrientation,
|
||||
SQLLEN FetchOffset) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::FetchScroll, StatementHandle, FetchOrientation,
|
||||
FetchOffset);
|
||||
}
|
||||
|
||||
SQLRETURN GetData(SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
|
||||
SQLPOINTER TargetValuePtr, SQLLEN BufferLength,
|
||||
SQLLEN* StrLen_or_IndPtr) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::GetData, StatementHandle, ColumnNumber, TargetType,
|
||||
TargetValuePtr, BufferLength, StrLen_or_IndPtr);
|
||||
}
|
||||
|
||||
SQLRETURN SetPos(SQLHSTMT StatementHandle, SQLSETPOSIROW RowNumber, SQLUSMALLINT Operation,
|
||||
SQLUSMALLINT LockType) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::SetPos, StatementHandle, RowNumber, Operation,
|
||||
LockType);
|
||||
}
|
||||
|
||||
SQLRETURN BulkOperations(SQLHSTMT StatementHandle, SQLSMALLINT Operation) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::BulkOperations, StatementHandle, Operation);
|
||||
}
|
||||
|
||||
SQLRETURN MoreResults(SQLHSTMT StatementHandle) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::MoreResults, StatementHandle);
|
||||
}
|
||||
|
||||
SQLRETURN GetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle, SQLSMALLINT RecNumber,
|
||||
SQLCHAR* Sqlstate, SQLINTEGER* NativeErrorPtr, SQLCHAR* MessageText,
|
||||
SQLSMALLINT BufferLength, SQLSMALLINT* TextLengthPtr) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::GetDiagRec, HandleType, Handle, RecNumber, Sqlstate,
|
||||
NativeErrorPtr, MessageText, BufferLength, TextLengthPtr);
|
||||
}
|
||||
|
||||
SQLRETURN ColumnPrivileges(SQLHSTMT StatementHandle, SQLCHAR* CatalogName,
|
||||
SQLSMALLINT NameLength1, SQLCHAR* SchemaName,
|
||||
SQLSMALLINT NameLength2, SQLCHAR* TableName, SQLSMALLINT NameLength3,
|
||||
SQLCHAR* ColumnName, SQLSMALLINT NameLength4) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::ColumnPrivileges, StatementHandle, CatalogName,
|
||||
NameLength1, SchemaName, NameLength2, TableName, NameLength3, ColumnName,
|
||||
NameLength4);
|
||||
}
|
||||
|
||||
SQLRETURN Columns(SQLHSTMT StatementHandle, SQLCHAR* CatalogName, SQLSMALLINT NameLength1,
|
||||
SQLCHAR* SchemaName, SQLSMALLINT NameLength2, SQLCHAR* TableName,
|
||||
SQLSMALLINT NameLength3, SQLCHAR* ColumnName,
|
||||
SQLSMALLINT NameLength4) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::Columns, StatementHandle, CatalogName, NameLength1,
|
||||
SchemaName, NameLength2, TableName, NameLength3, ColumnName, NameLength4);
|
||||
}
|
||||
|
||||
SQLRETURN ForeignKeys(SQLHSTMT StatementHandle, SQLCHAR* PKCatalogName, SQLSMALLINT NameLength1,
|
||||
SQLCHAR* PKSchemaName, SQLSMALLINT NameLength2, SQLCHAR* PKTableName,
|
||||
SQLSMALLINT NameLength3, SQLCHAR* FKCatalogName, SQLSMALLINT NameLength4,
|
||||
SQLCHAR* FKSchemaName, SQLSMALLINT NameLength5, SQLCHAR* FKTableName,
|
||||
SQLSMALLINT NameLength6) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::ForeignKeys, StatementHandle, PKCatalogName,
|
||||
NameLength1, PKSchemaName, NameLength2, PKTableName, NameLength3,
|
||||
FKCatalogName, NameLength4, FKSchemaName, NameLength5, FKTableName,
|
||||
NameLength6);
|
||||
}
|
||||
|
||||
SQLRETURN PrimaryKeys(SQLHSTMT StatementHandle, SQLCHAR* CatalogName, SQLSMALLINT NameLength1,
|
||||
SQLCHAR* SchemaName, SQLSMALLINT NameLength2, SQLCHAR* TableName,
|
||||
SQLSMALLINT NameLength3) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::PrimaryKeys, StatementHandle, CatalogName, NameLength1,
|
||||
SchemaName, NameLength2, TableName, NameLength3);
|
||||
}
|
||||
|
||||
SQLRETURN ProcedureColumns(SQLHSTMT StatementHandle, SQLCHAR* CatalogName,
|
||||
SQLSMALLINT NameLength1, SQLCHAR* SchemaName,
|
||||
SQLSMALLINT NameLength2, SQLCHAR* ProcName, SQLSMALLINT NameLength3,
|
||||
SQLCHAR* ColumnName, SQLSMALLINT NameLength4) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::ProcedureColumns, StatementHandle, CatalogName,
|
||||
NameLength1, SchemaName, NameLength2, ProcName, NameLength3, ColumnName,
|
||||
NameLength4);
|
||||
}
|
||||
|
||||
SQLRETURN Procedures(SQLHSTMT StatementHandle, SQLCHAR* CatalogName, SQLSMALLINT NameLength1,
|
||||
SQLCHAR* SchemaName, SQLSMALLINT NameLength2, SQLCHAR* ProcName,
|
||||
SQLSMALLINT NameLength3) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::Procedures, StatementHandle, CatalogName, NameLength1,
|
||||
SchemaName, NameLength2, ProcName, NameLength3);
|
||||
}
|
||||
|
||||
SQLRETURN SpecialColumns(SQLHSTMT StatementHandle, SQLUSMALLINT IdentifierType,
|
||||
SQLCHAR* CatalogName, SQLSMALLINT NameLength1, SQLCHAR* SchemaName,
|
||||
SQLSMALLINT NameLength2, SQLCHAR* TableName, SQLSMALLINT NameLength3,
|
||||
SQLUSMALLINT Scope, SQLUSMALLINT Nullable) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::SpecialColumns, StatementHandle, IdentifierType,
|
||||
CatalogName, NameLength1, SchemaName, NameLength2, TableName, NameLength3,
|
||||
Scope, Nullable);
|
||||
}
|
||||
|
||||
SQLRETURN Statistics(SQLHSTMT StatementHandle, SQLCHAR* CatalogName, SQLSMALLINT NameLength1,
|
||||
SQLCHAR* SchemaName, SQLSMALLINT NameLength2, SQLCHAR* TableName,
|
||||
SQLSMALLINT NameLength3, SQLUSMALLINT Unique,
|
||||
SQLUSMALLINT Reserved) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::Statistics, StatementHandle, CatalogName, NameLength1,
|
||||
SchemaName, NameLength2, TableName, NameLength3, Unique, Reserved);
|
||||
}
|
||||
|
||||
SQLRETURN TablePrivileges(SQLHSTMT StatementHandle, SQLCHAR* CatalogName,
|
||||
SQLSMALLINT NameLength1, SQLCHAR* SchemaName, SQLSMALLINT NameLength2,
|
||||
SQLCHAR* TableName, SQLSMALLINT NameLength3) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::TablePrivileges, StatementHandle, CatalogName,
|
||||
NameLength1, SchemaName, NameLength2, TableName, NameLength3);
|
||||
}
|
||||
|
||||
SQLRETURN Tables(SQLHSTMT StatementHandle, SQLCHAR* CatalogName, SQLSMALLINT NameLength1,
|
||||
SQLCHAR* SchemaName, SQLSMALLINT NameLength2, SQLCHAR* TableName,
|
||||
SQLSMALLINT NameLength3, SQLCHAR* TableType,
|
||||
SQLSMALLINT NameLength4) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::Tables, StatementHandle, CatalogName, NameLength1,
|
||||
SchemaName, NameLength2, TableName, NameLength3, TableType, NameLength4);
|
||||
}
|
||||
|
||||
SQLRETURN FreeStmt(SQLHSTMT StatementHandle, SQLUSMALLINT Option) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::FreeStmt, StatementHandle, Option);
|
||||
}
|
||||
|
||||
SQLRETURN CloseCursor(SQLHSTMT StatementHandle) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::CloseCursor, StatementHandle);
|
||||
}
|
||||
|
||||
SQLRETURN Cancel(SQLHSTMT StatementHandle) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::Cancel, StatementHandle);
|
||||
}
|
||||
|
||||
SQLRETURN EndTran(SQLSMALLINT HandleType, SQLHANDLE Handle,
|
||||
SQLSMALLINT CompletionType) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::EndTran, HandleType, Handle, CompletionType);
|
||||
}
|
||||
|
||||
SQLRETURN Disconnect(SQLHDBC ConnectionHandle) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::Disconnect, ConnectionHandle);
|
||||
}
|
||||
|
||||
SQLRETURN FreeHandle(SQLSMALLINT HandleType, SQLHANDLE Handle) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::FreeHandle, HandleType, Handle);
|
||||
}
|
||||
|
||||
SQLRETURN GetCursorName(SQLHSTMT StatementHandle, SQLCHAR* CursorName, SQLSMALLINT BufferLength,
|
||||
SQLSMALLINT* NameLength2) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::GetCursorName, StatementHandle, CursorName,
|
||||
BufferLength, NameLength2);
|
||||
}
|
||||
|
||||
SQLRETURN NativeSql(SQLHDBC ConnectionHandle, SQLCHAR* InStatementText, SQLINTEGER TextLength1,
|
||||
SQLCHAR* OutStatementText, SQLINTEGER BufferLength,
|
||||
SQLINTEGER* TextLength2Ptr) const override
|
||||
{
|
||||
return ODBCFunc(ODBC3SQLFunctionId::NativeSql, ConnectionHandle, InStatementText,
|
||||
TextLength1, OutStatementText, BufferLength, TextLength2Ptr);
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual SQLHANDLE EnvironmentHandle() override;
|
||||
|
||||
private:
|
||||
template <typename... Args> static SQLRETURN ODBCFunc(ODBC3SQLFunctionId id, Args... args)
|
||||
{
|
||||
assert(id > ODBC3SQLFunctionId::FIRST && id < ODBC3SQLFunctionId::LAST);
|
||||
assert(pODBC3SQLFunctions[static_cast<size_t>(id)]);
|
||||
using Func_t = SQLRETURN(SQL_API*)(Args...);
|
||||
return (*reinterpret_cast<Func_t>(pODBC3SQLFunctions[static_cast<size_t>(id)]))(args...);
|
||||
}
|
||||
|
||||
SQLHANDLE m_pDriverHandle = SQL_NULL_HANDLE;
|
||||
};
|
||||
|
||||
// ODBC Environment (common for all Connections):
|
||||
SQLHANDLE ORealOdbcDriver::EnvironmentHandle()
|
||||
{
|
||||
// Is (for this instance) already an Environment made?
|
||||
if (m_pDriverHandle == SQL_NULL_HANDLE)
|
||||
{
|
||||
OUString aPath;
|
||||
SQLHANDLE h = SQL_NULL_HANDLE;
|
||||
// allocate Environment
|
||||
// load ODBC-DLL now:
|
||||
if (!LoadLibrary_ODBC3(aPath)
|
||||
|| AllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &h) != SQL_SUCCESS)
|
||||
dbtools::throwSQLException(aPath, OUString(), *this, 1000);
|
||||
|
||||
// Save in global Structure
|
||||
m_pDriverHandle = h;
|
||||
SetEnvAttr(h, SQL_ATTR_ODBC_VERSION, reinterpret_cast<SQLPOINTER>(SQL_OV_ODBC3),
|
||||
SQL_IS_UINTEGER);
|
||||
//N3SQLSetEnvAttr(h, SQL_ATTR_CONNECTION_POOLING,(SQLPOINTER) SQL_CP_ONE_PER_HENV, SQL_IS_INTEGER);
|
||||
}
|
||||
|
||||
return m_pDriverHandle;
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
|
||||
connectivity_odbc_ORealOdbcDriver_get_implementation(css::uno::XComponentContext* context,
|
||||
css::uno::Sequence<css::uno::Any> const&)
|
||||
{
|
||||
return cppu::acquire(new ORealOdbcDriver(context));
|
||||
}
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
|
|
|
@ -1,245 +0,0 @@
|
|||
/* -*- 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 .
|
||||
*/
|
||||
|
||||
#include <odbc/OFunctions.hxx>
|
||||
|
||||
// Implib definitions for ODBC-DLL/shared library:
|
||||
|
||||
namespace connectivity
|
||||
{
|
||||
T3SQLAllocHandle pODBC3SQLAllocHandle;
|
||||
T3SQLConnect pODBC3SQLConnect;
|
||||
T3SQLDriverConnect pODBC3SQLDriverConnect;
|
||||
T3SQLBrowseConnect pODBC3SQLBrowseConnect;
|
||||
T3SQLDataSources pODBC3SQLDataSources;
|
||||
T3SQLDrivers pODBC3SQLDrivers;
|
||||
T3SQLGetInfo pODBC3SQLGetInfo;
|
||||
T3SQLGetFunctions pODBC3SQLGetFunctions;
|
||||
T3SQLGetTypeInfo pODBC3SQLGetTypeInfo;
|
||||
T3SQLSetConnectAttr pODBC3SQLSetConnectAttr;
|
||||
T3SQLGetConnectAttr pODBC3SQLGetConnectAttr;
|
||||
T3SQLSetEnvAttr pODBC3SQLSetEnvAttr;
|
||||
T3SQLGetEnvAttr pODBC3SQLGetEnvAttr;
|
||||
T3SQLSetStmtAttr pODBC3SQLSetStmtAttr;
|
||||
T3SQLGetStmtAttr pODBC3SQLGetStmtAttr;
|
||||
T3SQLPrepare pODBC3SQLPrepare;
|
||||
T3SQLBindParameter pODBC3SQLBindParameter;
|
||||
T3SQLSetCursorName pODBC3SQLSetCursorName;
|
||||
T3SQLExecute pODBC3SQLExecute;
|
||||
T3SQLExecDirect pODBC3SQLExecDirect;
|
||||
T3SQLDescribeParam pODBC3SQLDescribeParam;
|
||||
T3SQLNumParams pODBC3SQLNumParams;
|
||||
T3SQLParamData pODBC3SQLParamData;
|
||||
T3SQLPutData pODBC3SQLPutData;
|
||||
T3SQLRowCount pODBC3SQLRowCount;
|
||||
T3SQLNumResultCols pODBC3SQLNumResultCols;
|
||||
T3SQLDescribeCol pODBC3SQLDescribeCol;
|
||||
T3SQLColAttribute pODBC3SQLColAttribute;
|
||||
T3SQLBindCol pODBC3SQLBindCol;
|
||||
T3SQLFetch pODBC3SQLFetch;
|
||||
T3SQLFetchScroll pODBC3SQLFetchScroll;
|
||||
T3SQLGetData pODBC3SQLGetData;
|
||||
T3SQLSetPos pODBC3SQLSetPos;
|
||||
T3SQLBulkOperations pODBC3SQLBulkOperations;
|
||||
T3SQLMoreResults pODBC3SQLMoreResults;
|
||||
T3SQLGetDiagRec pODBC3SQLGetDiagRec;
|
||||
T3SQLColumnPrivileges pODBC3SQLColumnPrivileges;
|
||||
T3SQLColumns pODBC3SQLColumns;
|
||||
T3SQLForeignKeys pODBC3SQLForeignKeys;
|
||||
T3SQLPrimaryKeys pODBC3SQLPrimaryKeys;
|
||||
T3SQLProcedureColumns pODBC3SQLProcedureColumns;
|
||||
T3SQLProcedures pODBC3SQLProcedures;
|
||||
T3SQLSpecialColumns pODBC3SQLSpecialColumns;
|
||||
T3SQLStatistics pODBC3SQLStatistics;
|
||||
T3SQLTablePrivileges pODBC3SQLTablePrivileges;
|
||||
T3SQLTables pODBC3SQLTables;
|
||||
T3SQLFreeStmt pODBC3SQLFreeStmt;
|
||||
T3SQLCloseCursor pODBC3SQLCloseCursor;
|
||||
T3SQLCancel pODBC3SQLCancel;
|
||||
T3SQLEndTran pODBC3SQLEndTran;
|
||||
T3SQLDisconnect pODBC3SQLDisconnect;
|
||||
T3SQLFreeHandle pODBC3SQLFreeHandle;
|
||||
T3SQLGetCursorName pODBC3SQLGetCursorName;
|
||||
T3SQLNativeSql pODBC3SQLNativeSql;
|
||||
|
||||
static bool LoadFunctions(oslModule pODBCso);
|
||||
|
||||
// Take care of Dynamically loading of the DLL/shared lib and Addresses:
|
||||
// Returns sal_True at success
|
||||
bool LoadLibrary_ODBC3(OUString &_rPath)
|
||||
{
|
||||
static bool bLoaded = false;
|
||||
static oslModule pODBCso = nullptr;
|
||||
|
||||
if (bLoaded)
|
||||
return true;
|
||||
#ifdef DISABLE_DYNLOADING
|
||||
(void)_rPath;
|
||||
#else
|
||||
#ifdef _WIN32
|
||||
_rPath = "ODBC32.DLL";
|
||||
#endif
|
||||
#ifdef UNX
|
||||
#ifdef MACOSX
|
||||
_rPath = "libiodbc.dylib";
|
||||
#else
|
||||
_rPath = "libodbc.so.2";
|
||||
pODBCso = osl_loadModule( _rPath.pData,SAL_LOADMODULE_NOW );
|
||||
if ( !pODBCso )
|
||||
{
|
||||
_rPath = "libodbc.so.1";
|
||||
pODBCso = osl_loadModule( _rPath.pData,SAL_LOADMODULE_NOW );
|
||||
}
|
||||
if ( !pODBCso )
|
||||
_rPath = "libodbc.so";
|
||||
|
||||
#endif /* MACOSX */
|
||||
#endif
|
||||
|
||||
if ( !pODBCso )
|
||||
pODBCso = osl_loadModule( _rPath.pData,SAL_LOADMODULE_NOW );
|
||||
#endif // DISABLE_DYNLOADING
|
||||
if( !pODBCso)
|
||||
return false;
|
||||
|
||||
bLoaded = LoadFunctions(pODBCso);
|
||||
return bLoaded;
|
||||
}
|
||||
|
||||
|
||||
bool LoadFunctions(oslModule pODBCso)
|
||||
{
|
||||
|
||||
if( ( pODBC3SQLAllocHandle = reinterpret_cast<T3SQLAllocHandle>(osl_getFunctionSymbol(pODBCso, u"SQLAllocHandle"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLConnect = reinterpret_cast<T3SQLConnect>(osl_getFunctionSymbol(pODBCso, u"SQLConnect"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLDriverConnect = reinterpret_cast<T3SQLDriverConnect>(osl_getFunctionSymbol(pODBCso, u"SQLDriverConnect"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLBrowseConnect = reinterpret_cast<T3SQLBrowseConnect>(osl_getFunctionSymbol(pODBCso, u"SQLBrowseConnect"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if(( pODBC3SQLDataSources = reinterpret_cast<T3SQLDataSources>(osl_getFunctionSymbol(pODBCso, u"SQLDataSources"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if(( pODBC3SQLDrivers = reinterpret_cast<T3SQLDrivers>(osl_getFunctionSymbol(pODBCso, u"SQLDrivers"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLGetInfo = reinterpret_cast<T3SQLGetInfo>(osl_getFunctionSymbol(pODBCso, u"SQLGetInfo"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if(( pODBC3SQLGetFunctions = reinterpret_cast<T3SQLGetFunctions>(osl_getFunctionSymbol(pODBCso, u"SQLGetFunctions"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLGetTypeInfo = reinterpret_cast<T3SQLGetTypeInfo>(osl_getFunctionSymbol(pODBCso, u"SQLGetTypeInfo"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLSetConnectAttr = reinterpret_cast<T3SQLSetConnectAttr>(osl_getFunctionSymbol(pODBCso, u"SQLSetConnectAttr"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLGetConnectAttr = reinterpret_cast<T3SQLGetConnectAttr>(osl_getFunctionSymbol(pODBCso, u"SQLGetConnectAttr"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLSetEnvAttr = reinterpret_cast<T3SQLSetEnvAttr>(osl_getFunctionSymbol(pODBCso, u"SQLSetEnvAttr"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLGetEnvAttr = reinterpret_cast<T3SQLGetEnvAttr>(osl_getFunctionSymbol(pODBCso, u"SQLGetEnvAttr"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLSetStmtAttr = reinterpret_cast<T3SQLSetStmtAttr>(osl_getFunctionSymbol(pODBCso, u"SQLSetStmtAttr"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLGetStmtAttr = reinterpret_cast<T3SQLGetStmtAttr>(osl_getFunctionSymbol(pODBCso, u"SQLGetStmtAttr"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLPrepare = reinterpret_cast<T3SQLPrepare>(osl_getFunctionSymbol(pODBCso, u"SQLPrepare"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLBindParameter = reinterpret_cast<T3SQLBindParameter>(osl_getFunctionSymbol(pODBCso, u"SQLBindParameter"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLSetCursorName = reinterpret_cast<T3SQLSetCursorName>(osl_getFunctionSymbol(pODBCso, u"SQLSetCursorName"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLExecute = reinterpret_cast<T3SQLExecute>(osl_getFunctionSymbol(pODBCso, u"SQLExecute"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLExecDirect = reinterpret_cast<T3SQLExecDirect>(osl_getFunctionSymbol(pODBCso, u"SQLExecDirect"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLDescribeParam = reinterpret_cast<T3SQLDescribeParam>(osl_getFunctionSymbol(pODBCso, u"SQLDescribeParam"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLNumParams = reinterpret_cast<T3SQLNumParams>(osl_getFunctionSymbol(pODBCso, u"SQLNumParams"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLParamData = reinterpret_cast<T3SQLParamData>(osl_getFunctionSymbol(pODBCso, u"SQLParamData"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLPutData = reinterpret_cast<T3SQLPutData>(osl_getFunctionSymbol(pODBCso, u"SQLPutData"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLRowCount = reinterpret_cast<T3SQLRowCount>(osl_getFunctionSymbol(pODBCso, u"SQLRowCount"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLNumResultCols = reinterpret_cast<T3SQLNumResultCols>(osl_getFunctionSymbol(pODBCso, u"SQLNumResultCols"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLDescribeCol = reinterpret_cast<T3SQLDescribeCol>(osl_getFunctionSymbol(pODBCso, u"SQLDescribeCol"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLColAttribute = reinterpret_cast<T3SQLColAttribute>(osl_getFunctionSymbol(pODBCso, u"SQLColAttribute"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLBindCol = reinterpret_cast<T3SQLBindCol>(osl_getFunctionSymbol(pODBCso, u"SQLBindCol"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLFetch = reinterpret_cast<T3SQLFetch>(osl_getFunctionSymbol(pODBCso, u"SQLFetch"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLFetchScroll = reinterpret_cast<T3SQLFetchScroll>(osl_getFunctionSymbol(pODBCso, u"SQLFetchScroll"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLGetData = reinterpret_cast<T3SQLGetData>(osl_getFunctionSymbol(pODBCso, u"SQLGetData"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLSetPos = reinterpret_cast<T3SQLSetPos>(osl_getFunctionSymbol(pODBCso, u"SQLSetPos"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLBulkOperations = reinterpret_cast<T3SQLBulkOperations>(osl_getFunctionSymbol(pODBCso, u"SQLBulkOperations"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLMoreResults = reinterpret_cast<T3SQLMoreResults>(osl_getFunctionSymbol(pODBCso, u"SQLMoreResults"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLGetDiagRec = reinterpret_cast<T3SQLGetDiagRec>(osl_getFunctionSymbol(pODBCso, u"SQLGetDiagRec"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLColumnPrivileges = reinterpret_cast<T3SQLColumnPrivileges>(osl_getFunctionSymbol(pODBCso, u"SQLColumnPrivileges"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLColumns = reinterpret_cast<T3SQLColumns>(osl_getFunctionSymbol(pODBCso, u"SQLColumns"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLForeignKeys = reinterpret_cast<T3SQLForeignKeys>(osl_getFunctionSymbol(pODBCso, u"SQLForeignKeys"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLPrimaryKeys = reinterpret_cast<T3SQLPrimaryKeys>(osl_getFunctionSymbol(pODBCso, u"SQLPrimaryKeys"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLProcedureColumns = reinterpret_cast<T3SQLProcedureColumns>(osl_getFunctionSymbol(pODBCso, u"SQLProcedureColumns"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLProcedures = reinterpret_cast<T3SQLProcedures>(osl_getFunctionSymbol(pODBCso, u"SQLProcedures"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLSpecialColumns = reinterpret_cast<T3SQLSpecialColumns>(osl_getFunctionSymbol(pODBCso, u"SQLSpecialColumns"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLStatistics = reinterpret_cast<T3SQLStatistics>(osl_getFunctionSymbol(pODBCso, u"SQLStatistics"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLTablePrivileges = reinterpret_cast<T3SQLTablePrivileges>(osl_getFunctionSymbol(pODBCso, u"SQLTablePrivileges"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLTables = reinterpret_cast<T3SQLTables>(osl_getFunctionSymbol(pODBCso, u"SQLTables"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLFreeStmt = reinterpret_cast<T3SQLFreeStmt>(osl_getFunctionSymbol(pODBCso, u"SQLFreeStmt"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLCloseCursor = reinterpret_cast<T3SQLCloseCursor>(osl_getFunctionSymbol(pODBCso, u"SQLCloseCursor"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLCancel = reinterpret_cast<T3SQLCancel>(osl_getFunctionSymbol(pODBCso, u"SQLCancel"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLEndTran = reinterpret_cast<T3SQLEndTran>(osl_getFunctionSymbol(pODBCso, u"SQLEndTran"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLDisconnect = reinterpret_cast<T3SQLDisconnect>(osl_getFunctionSymbol(pODBCso, u"SQLDisconnect"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLFreeHandle = reinterpret_cast<T3SQLFreeHandle>(osl_getFunctionSymbol(pODBCso, u"SQLFreeHandle"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLGetCursorName = reinterpret_cast<T3SQLGetCursorName>(osl_getFunctionSymbol(pODBCso, u"SQLGetCursorName"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
if( ( pODBC3SQLNativeSql = reinterpret_cast<T3SQLNativeSql>(osl_getFunctionSymbol(pODBCso, u"SQLNativeSql"_ustr.pData ))) == nullptr )
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
|
@ -147,7 +147,7 @@ sal_Bool SAL_CALL OPreparedStatement::execute( )
|
|||
OSL_ENSURE(m_aStatementHandle,"StatementHandle is null!");
|
||||
try
|
||||
{
|
||||
SQLRETURN nReturn = N3SQLExecute(m_aStatementHandle);
|
||||
SQLRETURN nReturn = functions().Execute(m_aStatementHandle);
|
||||
|
||||
OTools::ThrowException(m_pConnection.get(),nReturn,m_aStatementHandle,SQL_HANDLE_STMT,*this);
|
||||
bool needData = nReturn == SQL_NEED_DATA;
|
||||
|
@ -161,7 +161,7 @@ sal_Bool SAL_CALL OPreparedStatement::execute( )
|
|||
// Get the parameter number that requires data
|
||||
|
||||
sal_Int32* paramIndex = nullptr;
|
||||
N3SQLParamData(m_aStatementHandle, reinterpret_cast<SQLPOINTER*>(¶mIndex));
|
||||
functions().ParamData(m_aStatementHandle, reinterpret_cast<SQLPOINTER*>(¶mIndex));
|
||||
|
||||
// If the parameter index is -1, there is no
|
||||
// more data required
|
||||
|
@ -373,7 +373,7 @@ void OPreparedStatement::setParameter(const sal_Int32 parameterIndex, const sal_
|
|||
rDataLen = _nDataLen;
|
||||
|
||||
SQLRETURN nRetcode;
|
||||
nRetcode = (*reinterpret_cast<T3SQLBindParameter>(m_pConnection->getOdbcFunction(ODBC3SQLFunctionId::BindParameter)))(
|
||||
nRetcode = functions().BindParameter(
|
||||
m_aStatementHandle,
|
||||
// checkParameterIndex guarantees this is safe
|
||||
static_cast<SQLUSMALLINT>(parameterIndex),
|
||||
|
@ -513,7 +513,7 @@ void SAL_CALL OPreparedStatement::setNull( sal_Int32 parameterIndex, const sal_I
|
|||
fCType,
|
||||
fSqlType);
|
||||
|
||||
SQLRETURN nReturn = N3SQLBindParameter( m_aStatementHandle,
|
||||
SQLRETURN nReturn = functions().BindParameter( m_aStatementHandle,
|
||||
static_cast<SQLUSMALLINT>(parameterIndex),
|
||||
SQL_PARAM_INPUT,
|
||||
fCType,
|
||||
|
@ -639,8 +639,8 @@ void SAL_CALL OPreparedStatement::clearParameters( )
|
|||
::osl::MutexGuard aGuard( m_aMutex );
|
||||
prepareStatement();
|
||||
OSL_ENSURE(m_aStatementHandle,"StatementHandle is null!");
|
||||
N3SQLFreeStmt (m_aStatementHandle, SQL_RESET_PARAMS);
|
||||
N3SQLFreeStmt (m_aStatementHandle, SQL_UNBIND);
|
||||
functions().FreeStmt (m_aStatementHandle, SQL_RESET_PARAMS);
|
||||
functions().FreeStmt (m_aStatementHandle, SQL_UNBIND);
|
||||
}
|
||||
|
||||
void SAL_CALL OPreparedStatement::clearBatch( )
|
||||
|
@ -673,7 +673,7 @@ void OPreparedStatement::initBoundParam ()
|
|||
OSL_ENSURE(m_aStatementHandle,"StatementHandle is null!");
|
||||
// Get the number of parameters
|
||||
numParams = 0;
|
||||
N3SQLNumParams (m_aStatementHandle,&numParams);
|
||||
functions().NumParams (m_aStatementHandle,&numParams);
|
||||
|
||||
// There are parameter markers, allocate the bound
|
||||
// parameter objects
|
||||
|
@ -772,7 +772,7 @@ void OPreparedStatement::putParamData (sal_Int32 index)
|
|||
|
||||
// Put the data
|
||||
OSL_ENSURE( m_aStatementHandle, "OPreparedStatement::putParamData: StatementHandle is null!" );
|
||||
N3SQLPutData ( m_aStatementHandle, buf.getArray(), buf.getLength() );
|
||||
functions().PutData ( m_aStatementHandle, buf.getArray(), buf.getLength() );
|
||||
|
||||
// decrement the number of bytes still needed
|
||||
maxBytesLeft -= haveRead;
|
||||
|
@ -823,7 +823,7 @@ void OPreparedStatement::setStream(
|
|||
|
||||
|
||||
OSL_ENSURE(m_aStatementHandle,"StatementHandle is null!");
|
||||
N3SQLBindParameter(m_aStatementHandle,
|
||||
functions().BindParameter(m_aStatementHandle,
|
||||
static_cast<SQLUSMALLINT>(ParameterIndex),
|
||||
SQL_PARAM_INPUT,
|
||||
fCType,
|
||||
|
@ -883,7 +883,7 @@ void OPreparedStatement::prepareStatement()
|
|||
{
|
||||
OSL_ENSURE(m_aStatementHandle,"StatementHandle is null!");
|
||||
OString aSql(OUStringToOString(m_sSqlStatement,getOwnConnection()->getTextEncoding()));
|
||||
SQLRETURN nReturn = N3SQLPrepare(m_aStatementHandle, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(aSql.getStr())), aSql.getLength());
|
||||
SQLRETURN nReturn = functions().Prepare(m_aStatementHandle, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(aSql.getStr())), aSql.getLength());
|
||||
OTools::ThrowException(m_pConnection.get(),nReturn,m_aStatementHandle,SQL_HANDLE_STMT,*this);
|
||||
m_bPrepared = true;
|
||||
initBoundParam();
|
||||
|
|
|
@ -1,291 +0,0 @@
|
|||
/* -*- 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 .
|
||||
*/
|
||||
|
||||
#include <odbc/ODriver.hxx>
|
||||
#include <odbc/OTools.hxx>
|
||||
#include <odbc/OFunctions.hxx>
|
||||
|
||||
namespace connectivity::odbc
|
||||
{
|
||||
namespace {
|
||||
|
||||
class ORealOdbcDriver : public ODBCDriver
|
||||
{
|
||||
protected:
|
||||
virtual oslGenericFunction getOdbcFunction(ODBC3SQLFunctionId _nIndex) const override;
|
||||
virtual SQLHANDLE EnvironmentHandle(OUString &_rPath) override;
|
||||
public:
|
||||
explicit ORealOdbcDriver(const css::uno::Reference< css::uno::XComponentContext >& _rxContext) : ODBCDriver(_rxContext) {}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
oslGenericFunction ORealOdbcDriver::getOdbcFunction(ODBC3SQLFunctionId _nIndex) const
|
||||
{
|
||||
oslGenericFunction pFunction = nullptr;
|
||||
switch(_nIndex)
|
||||
{
|
||||
case ODBC3SQLFunctionId::AllocHandle:
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLAllocHandle);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::Connect:
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLConnect);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::DriverConnect:
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLDriverConnect);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::BrowseConnect:
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLBrowseConnect);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::DataSources:
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLDataSources);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::Drivers:
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLDrivers);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::GetInfo:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLGetInfo);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::GetFunctions:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLGetFunctions);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::GetTypeInfo:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLGetTypeInfo);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::SetConnectAttr:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLSetConnectAttr);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::GetConnectAttr:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLGetConnectAttr);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::SetEnvAttr:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLSetEnvAttr);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::GetEnvAttr:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLGetEnvAttr);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::SetStmtAttr:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLSetStmtAttr);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::GetStmtAttr:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLGetStmtAttr);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::Prepare:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLPrepare);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::BindParameter:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLBindParameter);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::SetCursorName:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLSetCursorName);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::Execute:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLExecute);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::ExecDirect:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLExecDirect);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::DescribeParam:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLDescribeParam);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::NumParams:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLNumParams);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::ParamData:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLParamData);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::PutData:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLPutData);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::RowCount:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLRowCount);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::NumResultCols:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLNumResultCols);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::DescribeCol:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLDescribeCol);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::ColAttribute:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLColAttribute);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::BindCol:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLBindCol);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::Fetch:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLFetch);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::FetchScroll:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLFetchScroll);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::GetData:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLGetData);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::SetPos:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLSetPos);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::BulkOperations:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLBulkOperations);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::MoreResults:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLMoreResults);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::GetDiagRec:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLGetDiagRec);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::ColumnPrivileges:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLColumnPrivileges);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::Columns:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLColumns);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::ForeignKeys:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLForeignKeys);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::PrimaryKeys:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLPrimaryKeys);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::ProcedureColumns:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLProcedureColumns);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::Procedures:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLProcedures);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::SpecialColumns:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLSpecialColumns);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::Statistics:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLStatistics);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::TablePrivileges:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLTablePrivileges);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::Tables:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLTables);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::FreeStmt:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLFreeStmt);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::CloseCursor:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLCloseCursor);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::Cancel:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLCancel);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::EndTran:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLEndTran);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::Disconnect:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLDisconnect);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::FreeHandle:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLFreeHandle);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::GetCursorName:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLGetCursorName);
|
||||
break;
|
||||
case ODBC3SQLFunctionId::NativeSql:
|
||||
|
||||
pFunction = reinterpret_cast<oslGenericFunction>(pODBC3SQLNativeSql);
|
||||
break;
|
||||
default:
|
||||
OSL_FAIL("Function unknown!");
|
||||
}
|
||||
return pFunction;
|
||||
}
|
||||
|
||||
|
||||
// ODBC Environment (common for all Connections):
|
||||
SQLHANDLE ORealOdbcDriver::EnvironmentHandle(OUString &_rPath)
|
||||
{
|
||||
// Is (for this instance) already an Environment made?
|
||||
if (!m_pDriverHandle)
|
||||
{
|
||||
SQLHANDLE h = SQL_NULL_HANDLE;
|
||||
// allocate Environment
|
||||
|
||||
// load ODBC-DLL now:
|
||||
if (!LoadLibrary_ODBC3(_rPath) || N3SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&h) != SQL_SUCCESS)
|
||||
return SQL_NULL_HANDLE;
|
||||
|
||||
// Save in global Structure
|
||||
m_pDriverHandle = h;
|
||||
N3SQLSetEnvAttr(h, SQL_ATTR_ODBC_VERSION, reinterpret_cast<SQLPOINTER>(SQL_OV_ODBC3), SQL_IS_UINTEGER);
|
||||
//N3SQLSetEnvAttr(h, SQL_ATTR_CONNECTION_POOLING,(SQLPOINTER) SQL_CP_ONE_PER_HENV, SQL_IS_INTEGER);
|
||||
}
|
||||
|
||||
return m_pDriverHandle;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
|
||||
connectivity_odbc_ORealOdbcDriver_get_implementation(
|
||||
css::uno::XComponentContext* context, css::uno::Sequence<css::uno::Any> const&)
|
||||
{
|
||||
return cppu::acquire(new connectivity::odbc::ORealOdbcDriver(context));
|
||||
}
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
|
@ -142,10 +142,10 @@ OResultSet::OResultSet(SQLHANDLE _pStatementHandle ,OStatement_Base* pStmt) :
|
|||
// We use SQLFetchScroll unconditionally in several places
|
||||
// the *only* difference this makes is whether ::next() uses SQLFetchScroll or SQLFetch
|
||||
// so this test seems pointless
|
||||
if ( getOdbcFunction(ODBC3SQLFunctionId::GetFunctions) )
|
||||
if (functions().has(ODBC3SQLFunctionId::GetFunctions))
|
||||
{
|
||||
SQLUSMALLINT nSupported = 0;
|
||||
m_bUseFetchScroll = ( N3SQLGetFunctions(m_aConnectionHandle,SQL_API_SQLFETCHSCROLL,&nSupported) == SQL_SUCCESS && nSupported == 1 );
|
||||
m_bUseFetchScroll = ( functions().GetFunctions(m_aConnectionHandle,SQL_API_SQLFETCHSCROLL,&nSupported) == SQL_SUCCESS && nSupported == 1 );
|
||||
}
|
||||
}
|
||||
catch(const Exception&)
|
||||
|
@ -169,7 +169,7 @@ void OResultSet::construct()
|
|||
|
||||
void OResultSet::disposing()
|
||||
{
|
||||
N3SQLCloseCursor(m_aStatementHandle);
|
||||
functions().CloseCursor(m_aStatementHandle);
|
||||
OPropertySetHelper::disposing();
|
||||
|
||||
::osl::MutexGuard aGuard(m_aMutex);
|
||||
|
@ -184,7 +184,7 @@ SQLRETURN OResultSet::unbind(bool _bUnbindHandle)
|
|||
{
|
||||
SQLRETURN nRet = 0;
|
||||
if ( _bUnbindHandle )
|
||||
nRet = N3SQLFreeStmt(m_aStatementHandle,SQL_UNBIND);
|
||||
nRet = functions().FreeStmt(m_aStatementHandle,SQL_UNBIND);
|
||||
|
||||
if ( !m_aBindVector.empty() )
|
||||
{
|
||||
|
@ -808,7 +808,7 @@ void SAL_CALL OResultSet::cancel( )
|
|||
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
|
||||
|
||||
|
||||
N3SQLCancel(m_aStatementHandle);
|
||||
functions().Cancel(m_aStatementHandle);
|
||||
}
|
||||
|
||||
void SAL_CALL OResultSet::clearWarnings( )
|
||||
|
@ -830,7 +830,7 @@ void SAL_CALL OResultSet::insertRow( )
|
|||
Sequence<sal_Int8> aBookmark(nMaxBookmarkLen);
|
||||
static_assert(o3tl::make_unsigned(nMaxBookmarkLen) >= sizeof(SQLLEN), "must be larger");
|
||||
|
||||
SQLRETURN nRet = N3SQLBindCol(m_aStatementHandle,
|
||||
SQLRETURN nRet = functions().BindCol(m_aStatementHandle,
|
||||
0,
|
||||
SQL_C_VARBOOKMARK,
|
||||
aBookmark.getArray(),
|
||||
|
@ -838,17 +838,17 @@ void SAL_CALL OResultSet::insertRow( )
|
|||
&nRealLen
|
||||
);
|
||||
|
||||
bool bPositionByBookmark = ( nullptr != getOdbcFunction( ODBC3SQLFunctionId::BulkOperations ) );
|
||||
bool bPositionByBookmark = functions().has(ODBC3SQLFunctionId::BulkOperations);
|
||||
if ( bPositionByBookmark )
|
||||
{
|
||||
nRet = N3SQLBulkOperations( m_aStatementHandle, SQL_ADD );
|
||||
nRet = functions().BulkOperations( m_aStatementHandle, SQL_ADD );
|
||||
fillNeededData( nRet );
|
||||
}
|
||||
else
|
||||
{
|
||||
if(isBeforeFirst())
|
||||
next(); // must be done
|
||||
nRet = N3SQLSetPos( m_aStatementHandle, 1, SQL_ADD, SQL_LOCK_NO_CHANGE );
|
||||
nRet = functions().SetPos( m_aStatementHandle, 1, SQL_ADD, SQL_LOCK_NO_CHANGE );
|
||||
fillNeededData( nRet );
|
||||
}
|
||||
aBookmark.realloc(nRealLen);
|
||||
|
@ -869,10 +869,10 @@ void SAL_CALL OResultSet::insertRow( )
|
|||
{
|
||||
setStmtOption<SQLLEN*, SQL_IS_POINTER>(SQL_ATTR_FETCH_BOOKMARK_PTR, reinterpret_cast<SQLLEN*>(aBookmark.getArray()));
|
||||
|
||||
nRet = N3SQLFetchScroll(m_aStatementHandle,SQL_FETCH_BOOKMARK,0);
|
||||
nRet = functions().FetchScroll(m_aStatementHandle,SQL_FETCH_BOOKMARK,0);
|
||||
}
|
||||
else
|
||||
nRet = N3SQLFetchScroll(m_aStatementHandle,SQL_FETCH_RELATIVE,0); // OJ 06.03.2004
|
||||
nRet = functions().FetchScroll(m_aStatementHandle,SQL_FETCH_RELATIVE,0); // OJ 06.03.2004
|
||||
// sometimes we got an error but we are not interested in anymore #106047# OJ
|
||||
// OTools::ThrowException(m_pStatement->getOwnConnection(),nRet,m_aStatementHandle,SQL_HANDLE_STMT,*this);
|
||||
|
||||
|
@ -905,14 +905,14 @@ void SAL_CALL OResultSet::updateRow( )
|
|||
|
||||
try
|
||||
{
|
||||
bool bPositionByBookmark = ( nullptr != getOdbcFunction( ODBC3SQLFunctionId::BulkOperations ) );
|
||||
bool bPositionByBookmark = functions().has(ODBC3SQLFunctionId::BulkOperations);
|
||||
if ( bPositionByBookmark )
|
||||
{
|
||||
getBookmark();
|
||||
assert(m_aRow[0].isBound());
|
||||
Sequence<sal_Int8> aBookmark(m_aRow[0].getSequence());
|
||||
SQLLEN nRealLen = aBookmark.getLength();
|
||||
nRet = N3SQLBindCol(m_aStatementHandle,
|
||||
nRet = functions().BindCol(m_aStatementHandle,
|
||||
0,
|
||||
SQL_C_VARBOOKMARK,
|
||||
aBookmark.getArray(),
|
||||
|
@ -920,7 +920,7 @@ void SAL_CALL OResultSet::updateRow( )
|
|||
&nRealLen
|
||||
);
|
||||
OTools::ThrowException(m_pStatement->getOwnConnection(),nRet,m_aStatementHandle,SQL_HANDLE_STMT,*this);
|
||||
nRet = N3SQLBulkOperations(m_aStatementHandle, SQL_UPDATE_BY_BOOKMARK);
|
||||
nRet = functions().BulkOperations(m_aStatementHandle, SQL_UPDATE_BY_BOOKMARK);
|
||||
fillNeededData(nRet);
|
||||
// the driver should not have touched this
|
||||
// (neither the contents of aBookmark FWIW)
|
||||
|
@ -928,7 +928,7 @@ void SAL_CALL OResultSet::updateRow( )
|
|||
}
|
||||
else
|
||||
{
|
||||
nRet = N3SQLSetPos(m_aStatementHandle,1,SQL_UPDATE,SQL_LOCK_NO_CHANGE);
|
||||
nRet = functions().SetPos(m_aStatementHandle,1,SQL_UPDATE,SQL_LOCK_NO_CHANGE);
|
||||
fillNeededData(nRet);
|
||||
}
|
||||
OTools::ThrowException(m_pStatement->getOwnConnection(),nRet,m_aStatementHandle,SQL_HANDLE_STMT,*this);
|
||||
|
@ -952,7 +952,7 @@ void SAL_CALL OResultSet::deleteRow( )
|
|||
{
|
||||
SQLRETURN nRet = SQL_SUCCESS;
|
||||
sal_Int32 nPos = getDriverPos();
|
||||
nRet = N3SQLSetPos(m_aStatementHandle,1,SQL_DELETE,SQL_LOCK_NO_CHANGE);
|
||||
nRet = functions().SetPos(m_aStatementHandle,1,SQL_DELETE,SQL_LOCK_NO_CHANGE);
|
||||
OTools::ThrowException(m_pStatement->getOwnConnection(),nRet,m_aStatementHandle,SQL_HANDLE_STMT,*this);
|
||||
|
||||
m_bRowDeleted = ( m_pRowStatusArray[0] == SQL_ROW_DELETED );
|
||||
|
@ -982,7 +982,7 @@ void SAL_CALL OResultSet::moveToInsertRow( )
|
|||
invalidateCache();
|
||||
// first unbound all columns
|
||||
OSL_VERIFY( unbind() == SQL_SUCCESS );
|
||||
// SQLRETURN nRet = N3SQLSetStmtAttr(m_aStatementHandle,SQL_ATTR_ROW_ARRAY_SIZE ,(SQLPOINTER)1,SQL_IS_INTEGER);
|
||||
// SQLRETURN nRet = functions().SetStmtAttr(m_aStatementHandle,SQL_ATTR_ROW_ARRAY_SIZE ,(SQLPOINTER)1,SQL_IS_INTEGER);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1122,8 +1122,8 @@ void SAL_CALL OResultSet::refreshRow( )
|
|||
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
|
||||
|
||||
|
||||
// SQLRETURN nRet = N3SQLSetPos(m_aStatementHandle,1,SQL_REFRESH,SQL_LOCK_NO_CHANGE);
|
||||
m_nCurrentFetchState = N3SQLFetchScroll(m_aStatementHandle,SQL_FETCH_RELATIVE,0);
|
||||
// SQLRETURN nRet = functions().SetPos(m_aStatementHandle,1,SQL_REFRESH,SQL_LOCK_NO_CHANGE);
|
||||
m_nCurrentFetchState = functions().FetchScroll(m_aStatementHandle,SQL_FETCH_RELATIVE,0);
|
||||
OTools::ThrowException(m_pStatement->getOwnConnection(),m_nCurrentFetchState,m_aStatementHandle,SQL_HANDLE_STMT,*this);
|
||||
}
|
||||
|
||||
|
@ -1192,7 +1192,7 @@ sal_Bool SAL_CALL OResultSet::moveToBookmark( const Any& bookmark )
|
|||
|
||||
if ( SQL_INVALID_HANDLE != nReturn && SQL_ERROR != nReturn )
|
||||
{
|
||||
m_nCurrentFetchState = N3SQLFetchScroll(m_aStatementHandle,SQL_FETCH_BOOKMARK,0);
|
||||
m_nCurrentFetchState = functions().FetchScroll(m_aStatementHandle,SQL_FETCH_BOOKMARK,0);
|
||||
OTools::ThrowException(m_pStatement->getOwnConnection(),m_nCurrentFetchState,m_aStatementHandle,SQL_HANDLE_STMT,*this);
|
||||
TBookmarkPosMap::const_iterator aFind = m_aPosToBookmarks.find(aBookmark);
|
||||
if(aFind != m_aPosToBookmarks.end())
|
||||
|
@ -1216,7 +1216,7 @@ sal_Bool SAL_CALL OResultSet::moveRelativeToBookmark( const Any& bookmark, sal_
|
|||
bookmark >>= aBookmark;
|
||||
setStmtOption<SQLLEN*, SQL_IS_POINTER>(SQL_ATTR_FETCH_BOOKMARK_PTR, reinterpret_cast<SQLLEN*>(aBookmark.getArray()));
|
||||
|
||||
m_nCurrentFetchState = N3SQLFetchScroll(m_aStatementHandle,SQL_FETCH_BOOKMARK,rows);
|
||||
m_nCurrentFetchState = functions().FetchScroll(m_aStatementHandle,SQL_FETCH_BOOKMARK,rows);
|
||||
OTools::ThrowException(m_pStatement->getOwnConnection(),m_nCurrentFetchState,m_aStatementHandle,SQL_HANDLE_STMT,*this);
|
||||
return m_nCurrentFetchState == SQL_SUCCESS || m_nCurrentFetchState == SQL_SUCCESS_WITH_INFO;
|
||||
}
|
||||
|
@ -1270,14 +1270,14 @@ template < typename T, SQLINTEGER BufferLength > T OResultSet::getStmtOption (SQ
|
|||
{
|
||||
T result (0);
|
||||
OSL_ENSURE(m_aStatementHandle,"StatementHandle is null!");
|
||||
N3SQLGetStmtAttr(m_aStatementHandle, fOption, &result, BufferLength, nullptr);
|
||||
functions().GetStmtAttr(m_aStatementHandle, fOption, &result, BufferLength, nullptr);
|
||||
return result;
|
||||
}
|
||||
template < typename T, SQLINTEGER BufferLength > SQLRETURN OResultSet::setStmtOption (SQLINTEGER fOption, T value) const
|
||||
{
|
||||
OSL_ENSURE(m_aStatementHandle,"StatementHandle is null!");
|
||||
SQLPOINTER sv = reinterpret_cast<SQLPOINTER>(value);
|
||||
return N3SQLSetStmtAttr(m_aStatementHandle, fOption, sv, BufferLength);
|
||||
return functions().SetStmtAttr(m_aStatementHandle, fOption, sv, BufferLength);
|
||||
}
|
||||
|
||||
sal_Int32 OResultSet::getResultSetConcurrency() const
|
||||
|
@ -1322,7 +1322,7 @@ OUString OResultSet::getCursorName() const
|
|||
{
|
||||
SQLCHAR pName[258];
|
||||
SQLSMALLINT nRealLen = 0;
|
||||
N3SQLGetCursorName(m_aStatementHandle,pName,256,&nRealLen);
|
||||
functions().GetCursorName(m_aStatementHandle,pName,256,&nRealLen);
|
||||
return OUString::createFromAscii(reinterpret_cast<char*>(pName));
|
||||
}
|
||||
|
||||
|
@ -1680,9 +1680,9 @@ bool OResultSet::move(IResultSetHelper::Movement _eCursorPosition, sal_Int32 _nO
|
|||
// _eCursorPosition == IResultSetHelper::NEXT/PREVIOUS
|
||||
// when fetchSize > 1
|
||||
if ( !m_bUseFetchScroll && _eCursorPosition == IResultSetHelper::NEXT )
|
||||
m_nCurrentFetchState = N3SQLFetch(m_aStatementHandle);
|
||||
m_nCurrentFetchState = functions().Fetch(m_aStatementHandle);
|
||||
else
|
||||
m_nCurrentFetchState = N3SQLFetchScroll(m_aStatementHandle,nFetchOrientation,_nOffset);
|
||||
m_nCurrentFetchState = functions().FetchScroll(m_aStatementHandle,nFetchOrientation,_nOffset);
|
||||
|
||||
SAL_INFO(
|
||||
"connectivity.odbc",
|
||||
|
@ -1773,7 +1773,7 @@ void OResultSet::fillNeededData(SQLRETURN _nRet)
|
|||
return;
|
||||
|
||||
void* pColumnIndex = nullptr;
|
||||
nRet = N3SQLParamData(m_aStatementHandle,&pColumnIndex);
|
||||
nRet = functions().ParamData(m_aStatementHandle,&pColumnIndex);
|
||||
|
||||
do
|
||||
{
|
||||
|
@ -1789,12 +1789,12 @@ void OResultSet::fillNeededData(SQLRETURN _nRet)
|
|||
case DataType::LONGVARBINARY:
|
||||
case DataType::BLOB:
|
||||
aSeq = m_aRow[nColumnIndex].getSequence();
|
||||
N3SQLPutData (m_aStatementHandle, aSeq.getArray(), aSeq.getLength());
|
||||
functions().PutData (m_aStatementHandle, aSeq.getArray(), aSeq.getLength());
|
||||
break;
|
||||
case SQL_WLONGVARCHAR:
|
||||
{
|
||||
OUString const & sRet = m_aRow[nColumnIndex].getString();
|
||||
N3SQLPutData (m_aStatementHandle, static_cast<SQLPOINTER>(const_cast<sal_Unicode *>(sRet.getStr())), sizeof(sal_Unicode)*sRet.getLength());
|
||||
functions().PutData (m_aStatementHandle, static_cast<SQLPOINTER>(const_cast<sal_Unicode *>(sRet.getStr())), sizeof(sal_Unicode)*sRet.getLength());
|
||||
break;
|
||||
}
|
||||
case DataType::LONGVARCHAR:
|
||||
|
@ -1802,13 +1802,13 @@ void OResultSet::fillNeededData(SQLRETURN _nRet)
|
|||
{
|
||||
OUString sRet = m_aRow[nColumnIndex].getString();
|
||||
OString aString(OUStringToOString(sRet,m_nTextEncoding));
|
||||
N3SQLPutData (m_aStatementHandle, static_cast<SQLPOINTER>(const_cast<char *>(aString.getStr())), aString.getLength());
|
||||
functions().PutData (m_aStatementHandle, static_cast<SQLPOINTER>(const_cast<char *>(aString.getStr())), aString.getLength());
|
||||
break;
|
||||
}
|
||||
default:
|
||||
SAL_WARN( "connectivity.odbc", "Not supported at the moment!");
|
||||
}
|
||||
nRet = N3SQLParamData(m_aStatementHandle,&pColumnIndex);
|
||||
nRet = functions().ParamData(m_aStatementHandle,&pColumnIndex);
|
||||
}
|
||||
while (nRet == SQL_NEED_DATA);
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ OUString OResultSetMetaData::getCharColAttrib(sal_Int32 _column,sal_Int32 ident)
|
|||
SQLSMALLINT BUFFER_LEN = 128;
|
||||
std::unique_ptr<char[]> pName(new char[BUFFER_LEN+1]);
|
||||
SQLSMALLINT nRealLen=0;
|
||||
SQLRETURN nRet = N3SQLColAttribute(m_aStatementHandle,
|
||||
SQLRETURN nRet = functions().ColAttribute(m_aStatementHandle,
|
||||
static_cast<SQLUSMALLINT>(column),
|
||||
static_cast<SQLUSMALLINT>(ident),
|
||||
static_cast<SQLPOINTER>(pName.get()),
|
||||
|
@ -58,7 +58,7 @@ OUString OResultSetMetaData::getCharColAttrib(sal_Int32 _column,sal_Int32 ident)
|
|||
if(nRealLen > BUFFER_LEN)
|
||||
{
|
||||
pName.reset(new char[nRealLen+1]);
|
||||
nRet = N3SQLColAttribute(m_aStatementHandle,
|
||||
nRet = functions().ColAttribute(m_aStatementHandle,
|
||||
static_cast<SQLUSMALLINT>(column),
|
||||
static_cast<SQLUSMALLINT>(ident),
|
||||
static_cast<SQLPOINTER>(pName.get()),
|
||||
|
@ -81,7 +81,7 @@ SQLLEN OResultSetMetaData::getNumColAttrib(OConnection const * _pConnection
|
|||
,sal_Int32 _ident)
|
||||
{
|
||||
SQLLEN nValue=0;
|
||||
OTools::ThrowException(_pConnection,(*reinterpret_cast<T3SQLColAttribute>(_pConnection->getOdbcFunction(ODBC3SQLFunctionId::ColAttribute)))(_aStatementHandle,
|
||||
OTools::ThrowException(_pConnection,_pConnection->functions().ColAttribute(_aStatementHandle,
|
||||
static_cast<SQLUSMALLINT>(_column),
|
||||
static_cast<SQLUSMALLINT>(_ident),
|
||||
nullptr,
|
||||
|
@ -161,7 +161,7 @@ sal_Int32 SAL_CALL OResultSetMetaData::getColumnCount( )
|
|||
if(m_nColCount != -1)
|
||||
return m_nColCount;
|
||||
sal_Int16 nNumResultCols=0;
|
||||
OTools::ThrowException(m_pConnection,N3SQLNumResultCols(m_aStatementHandle,&nNumResultCols),m_aStatementHandle,SQL_HANDLE_STMT,*this);
|
||||
OTools::ThrowException(m_pConnection,functions().NumResultCols(m_aStatementHandle,&nNumResultCols),m_aStatementHandle,SQL_HANDLE_STMT,*this);
|
||||
m_nColCount = nNumResultCols;
|
||||
return m_nColCount;
|
||||
}
|
||||
|
|
|
@ -161,7 +161,7 @@ void SAL_CALL OStatement_Base::cancel( )
|
|||
checkDisposed(OStatement_BASE::rBHelper.bDisposed);
|
||||
|
||||
OSL_ENSURE(m_aStatementHandle,"StatementHandle is null!");
|
||||
N3SQLCancel(m_aStatementHandle);
|
||||
functions().Cancel(m_aStatementHandle);
|
||||
}
|
||||
|
||||
|
||||
|
@ -195,7 +195,7 @@ void OStatement_Base::reset()
|
|||
}
|
||||
if(m_aStatementHandle)
|
||||
{
|
||||
THROW_SQL(N3SQLFreeStmt(m_aStatementHandle, SQL_CLOSE));
|
||||
THROW_SQL(functions().FreeStmt(m_aStatementHandle, SQL_CLOSE));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -227,7 +227,7 @@ SQLLEN OStatement_Base::getRowCount()
|
|||
SQLLEN numRows = 0;
|
||||
|
||||
try {
|
||||
THROW_SQL(N3SQLRowCount(m_aStatementHandle,&numRows));
|
||||
THROW_SQL(functions().RowCount(m_aStatementHandle,&numRows));
|
||||
}
|
||||
catch (const SQLException&)
|
||||
{
|
||||
|
@ -299,7 +299,7 @@ sal_Int32 OStatement_Base::getColumnCount()
|
|||
OSL_ENSURE(m_aStatementHandle,"StatementHandle is null!");
|
||||
|
||||
try {
|
||||
THROW_SQL(N3SQLNumResultCols(m_aStatementHandle,&numCols));
|
||||
THROW_SQL(functions().NumResultCols(m_aStatementHandle,&numCols));
|
||||
}
|
||||
catch (const SQLException&)
|
||||
{
|
||||
|
@ -332,7 +332,7 @@ sal_Bool SAL_CALL OStatement_Base::execute( const OUString& sql )
|
|||
OSL_ENSURE(m_aStatementHandle,"StatementHandle is null!");
|
||||
|
||||
try {
|
||||
THROW_SQL(N3SQLExecDirect(m_aStatementHandle, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(aSql.getStr())), aSql.getLength()));
|
||||
THROW_SQL(functions().ExecDirect(m_aStatementHandle, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(aSql.getStr())), aSql.getLength()));
|
||||
}
|
||||
catch (const SQLWarning&) {
|
||||
|
||||
|
@ -404,14 +404,14 @@ template < typename T, SQLINTEGER BufferLength > T OStatement_Base::getStmtOptio
|
|||
{
|
||||
T result (0);
|
||||
OSL_ENSURE(m_aStatementHandle,"StatementHandle is null!");
|
||||
N3SQLGetStmtAttr(m_aStatementHandle, fOption, &result, BufferLength, nullptr);
|
||||
functions().GetStmtAttr(m_aStatementHandle, fOption, &result, BufferLength, nullptr);
|
||||
return result;
|
||||
}
|
||||
template < typename T, SQLINTEGER BufferLength > SQLRETURN OStatement_Base::setStmtOption (SQLINTEGER fOption, T value) const
|
||||
{
|
||||
OSL_ENSURE(m_aStatementHandle,"StatementHandle is null!");
|
||||
SQLPOINTER sv = reinterpret_cast<SQLPOINTER>(value);
|
||||
return N3SQLSetStmtAttr(m_aStatementHandle, fOption, sv, BufferLength);
|
||||
return functions().SetStmtAttr(m_aStatementHandle, fOption, sv, BufferLength);
|
||||
}
|
||||
|
||||
|
||||
|
@ -481,17 +481,17 @@ Sequence< sal_Int32 > SAL_CALL OStatement::executeBatch( )
|
|||
|
||||
OSL_ENSURE(m_aStatementHandle,"StatementHandle is null!");
|
||||
auto s = aBatchSql.makeStringAndClear();
|
||||
THROW_SQL(N3SQLExecDirect(m_aStatementHandle, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(s.getStr())), s.getLength()));
|
||||
THROW_SQL(functions().ExecDirect(m_aStatementHandle, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(s.getStr())), s.getLength()));
|
||||
|
||||
Sequence< sal_Int32 > aRet(nLen);
|
||||
sal_Int32* pArray = aRet.getArray();
|
||||
for(sal_Int32 j=0;j<nLen;++j)
|
||||
{
|
||||
SQLRETURN nError = N3SQLMoreResults(m_aStatementHandle);
|
||||
SQLRETURN nError = functions().MoreResults(m_aStatementHandle);
|
||||
if(nError == SQL_SUCCESS)
|
||||
{
|
||||
SQLLEN nRowCount=0;
|
||||
N3SQLRowCount(m_aStatementHandle,&nRowCount);
|
||||
functions().RowCount(m_aStatementHandle,&nRowCount);
|
||||
pArray[j] = nRowCount;
|
||||
}
|
||||
}
|
||||
|
@ -573,7 +573,7 @@ sal_Bool SAL_CALL OStatement_Base::getMoreResults( )
|
|||
OSL_ENSURE(m_aStatementHandle,"StatementHandle is null!");
|
||||
|
||||
try {
|
||||
hasResultSet = N3SQLMoreResults(m_aStatementHandle) == SQL_SUCCESS;
|
||||
hasResultSet = functions().MoreResults(m_aStatementHandle) == SQL_SUCCESS;
|
||||
}
|
||||
catch (const SQLWarning &ex) {
|
||||
|
||||
|
@ -704,7 +704,7 @@ OUString OStatement_Base::getCursorName() const
|
|||
OSL_ENSURE(m_aStatementHandle,"StatementHandle is null!");
|
||||
SQLCHAR pName[258];
|
||||
SQLSMALLINT nRealLen = 0;
|
||||
N3SQLGetCursorName(m_aStatementHandle,pName,256,&nRealLen);
|
||||
functions().GetCursorName(m_aStatementHandle,pName,256,&nRealLen);
|
||||
return OUString::createFromAscii(reinterpret_cast<char*>(pName));
|
||||
}
|
||||
|
||||
|
@ -833,7 +833,7 @@ void OStatement_Base::setCursorName(std::u16string_view _par0)
|
|||
{
|
||||
OSL_ENSURE(m_aStatementHandle,"StatementHandle is null!");
|
||||
OString aName(OUStringToOString(_par0,getOwnConnection()->getTextEncoding()));
|
||||
N3SQLSetCursorName(m_aStatementHandle, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(aName.getStr())), static_cast<SQLSMALLINT>(aName.getLength()));
|
||||
functions().SetCursorName(m_aStatementHandle, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(aName.getStr())), static_cast<SQLSMALLINT>(aName.getLength()));
|
||||
}
|
||||
|
||||
bool OStatement_Base::isUsingBookmarks() const
|
||||
|
|
|
@ -151,7 +151,7 @@ void OTools::getValue( OConnection const * _pConnection,
|
|||
OSL_ENSURE(o3tl::make_unsigned(_nSize) >= properSize, "memory region is too small");
|
||||
SQLLEN pcbValue = SQL_NULL_DATA;
|
||||
OTools::ThrowException(_pConnection,
|
||||
(*reinterpret_cast<T3SQLGetData>(_pConnection->getOdbcFunction(ODBC3SQLFunctionId::GetData)))(_aStatementHandle,
|
||||
_pConnection->functions().GetData(_aStatementHandle,
|
||||
static_cast<SQLUSMALLINT>(columnIndex),
|
||||
_nType,
|
||||
_pValue,
|
||||
|
@ -186,7 +186,7 @@ void OTools::bindValue( OConnection const * _pConnection,
|
|||
if (columnIndex != 0 && !_pValue)
|
||||
{
|
||||
*pLen = SQL_NULL_DATA;
|
||||
nRetcode = (*reinterpret_cast<T3SQLBindCol>(_pConnection->getOdbcFunction(ODBC3SQLFunctionId::BindCol)))(_aStatementHandle,
|
||||
nRetcode = _pConnection->functions().BindCol(_aStatementHandle,
|
||||
static_cast<SQLUSMALLINT>(columnIndex),
|
||||
fCType,
|
||||
_pData,
|
||||
|
@ -287,7 +287,7 @@ void OTools::bindValue( OConnection const * _pConnection,
|
|||
{
|
||||
}
|
||||
|
||||
nRetcode = (*reinterpret_cast<T3SQLBindCol>(_pConnection->getOdbcFunction(ODBC3SQLFunctionId::BindCol)))(_aStatementHandle,
|
||||
nRetcode = _pConnection->functions().BindCol(_aStatementHandle,
|
||||
static_cast<SQLUSMALLINT>(columnIndex),
|
||||
fCType,
|
||||
_pData,
|
||||
|
@ -340,7 +340,7 @@ void OTools::ThrowException(const OConnection* _pConnection,
|
|||
// statements of this connection [what in this case will probably be the same, but the Reference
|
||||
// Manual isn't totally clear in this...].
|
||||
// corresponding for hdbc.
|
||||
SQLRETURN n = (*reinterpret_cast<T3SQLGetDiagRec>(_pConnection->getOdbcFunction(ODBC3SQLFunctionId::GetDiagRec)))(_nHandleType,_pContext,1,
|
||||
SQLRETURN n = _pConnection->functions().GetDiagRec(_nHandleType,_pContext,1,
|
||||
szSqlState,
|
||||
&pfNativeError,
|
||||
szErrorMessage,sizeof szErrorMessage - 1,&pcbErrorMsg);
|
||||
|
@ -378,7 +378,7 @@ Sequence<sal_Int8> OTools::getBytesValue(const OConnection* _pConnection,
|
|||
while (pcbValue == SQL_NO_TOTAL || pcbValue > nMaxLen)
|
||||
{
|
||||
OTools::ThrowException(_pConnection,
|
||||
(*reinterpret_cast<T3SQLGetData>(_pConnection->getOdbcFunction(ODBC3SQLFunctionId::GetData)))(
|
||||
_pConnection->functions().GetData(
|
||||
_aStatementHandle,
|
||||
static_cast<SQLUSMALLINT>(columnIndex),
|
||||
_fSqlType,
|
||||
|
@ -438,7 +438,7 @@ OUString OTools::getStringValue(OConnection const * _pConnection,
|
|||
while ((pcbValue == SQL_NO_TOTAL ) || (pcbValue >= nMaxSize) )
|
||||
{
|
||||
OTools::ThrowException(_pConnection,
|
||||
(*reinterpret_cast<T3SQLGetData>(_pConnection->getOdbcFunction(ODBC3SQLFunctionId::GetData)))(
|
||||
_pConnection->functions().GetData(
|
||||
_aStatementHandle,
|
||||
static_cast<SQLUSMALLINT>(columnIndex),
|
||||
SQL_C_WCHAR,
|
||||
|
@ -482,7 +482,7 @@ OUString OTools::getStringValue(OConnection const * _pConnection,
|
|||
while ((pcbValue == SQL_NO_TOTAL ) || (pcbValue >= nMaxLen) )
|
||||
{
|
||||
OTools::ThrowException(_pConnection,
|
||||
(*reinterpret_cast<T3SQLGetData>(_pConnection->getOdbcFunction(ODBC3SQLFunctionId::GetData)))(
|
||||
_pConnection->functions().GetData(
|
||||
_aStatementHandle,
|
||||
static_cast<SQLUSMALLINT>(columnIndex),
|
||||
SQL_C_CHAR,
|
||||
|
@ -530,7 +530,7 @@ void OTools::GetInfo(OConnection const * _pConnection,
|
|||
char aValue[512];
|
||||
SQLSMALLINT nValueLen=0;
|
||||
OTools::ThrowException(_pConnection,
|
||||
(*reinterpret_cast<T3SQLGetInfo>(_pConnection->getOdbcFunction(ODBC3SQLFunctionId::GetInfo)))(_aConnectionHandle,_nInfo,aValue,(sizeof aValue)-1,&nValueLen),
|
||||
_pConnection->functions().GetInfo(_aConnectionHandle,_nInfo,aValue,(sizeof aValue)-1,&nValueLen),
|
||||
_aConnectionHandle,SQL_HANDLE_DBC,_xInterface);
|
||||
|
||||
_rValue = OUString(aValue,nValueLen,_nTextEncoding);
|
||||
|
@ -545,7 +545,7 @@ void OTools::GetInfo(OConnection const * _pConnection,
|
|||
SQLSMALLINT nValueLen;
|
||||
_rValue = 0; // in case the driver uses only 16 of the 32 bits (as it does, for example, for SQL_CATALOG_LOCATION)
|
||||
OTools::ThrowException(_pConnection,
|
||||
(*reinterpret_cast<T3SQLGetInfo>(_pConnection->getOdbcFunction(ODBC3SQLFunctionId::GetInfo)))(_aConnectionHandle,_nInfo,&_rValue,sizeof _rValue,&nValueLen),
|
||||
_pConnection->functions().GetInfo(_aConnectionHandle,_nInfo,&_rValue,sizeof _rValue,&nValueLen),
|
||||
_aConnectionHandle,SQL_HANDLE_DBC,_xInterface);
|
||||
}
|
||||
|
||||
|
@ -558,7 +558,7 @@ void OTools::GetInfo(OConnection const * _pConnection,
|
|||
SQLSMALLINT nValueLen;
|
||||
_rValue = 0; // in case the driver uses only 16 of the 32 bits (as it does, for example, for SQL_CATALOG_LOCATION)
|
||||
OTools::ThrowException(_pConnection,
|
||||
(*reinterpret_cast<T3SQLGetInfo>(_pConnection->getOdbcFunction(ODBC3SQLFunctionId::GetInfo)))(_aConnectionHandle,_nInfo,&_rValue,sizeof _rValue,&nValueLen),
|
||||
_pConnection->functions().GetInfo(_aConnectionHandle,_nInfo,&_rValue,sizeof _rValue,&nValueLen),
|
||||
_aConnectionHandle,SQL_HANDLE_DBC,_xInterface);
|
||||
}
|
||||
|
||||
|
@ -571,7 +571,7 @@ void OTools::GetInfo(OConnection const * _pConnection,
|
|||
SQLSMALLINT nValueLen;
|
||||
_rValue = 0; // in case the driver uses only 16 of the 32 bits (as it does, for example, for SQL_CATALOG_LOCATION)
|
||||
OTools::ThrowException(_pConnection,
|
||||
(*reinterpret_cast<T3SQLGetInfo>(_pConnection->getOdbcFunction(ODBC3SQLFunctionId::GetInfo)))(_aConnectionHandle,_nInfo,&_rValue,sizeof _rValue,&nValueLen),
|
||||
_pConnection->functions().GetInfo(_aConnectionHandle,_nInfo,&_rValue,sizeof _rValue,&nValueLen),
|
||||
_aConnectionHandle,SQL_HANDLE_DBC,_xInterface);
|
||||
}
|
||||
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
namespace connectivity::odbc
|
||||
{
|
||||
class ODBCDriver;
|
||||
class Functions;
|
||||
|
||||
typedef connectivity::OMetaConnection OConnection_BASE;
|
||||
typedef std::vector< ::connectivity::OTypeInfo> TTypeInfoVector;
|
||||
|
@ -69,7 +70,7 @@ namespace connectivity::odbc
|
|||
SQLRETURN OpenConnection(const OUString& aConnectStr,sal_Int32 nTimeOut, bool bSilent);
|
||||
|
||||
public:
|
||||
oslGenericFunction getOdbcFunction(ODBC3SQLFunctionId _nIndex) const;
|
||||
const Functions& functions() const;
|
||||
/// @throws css::sdbc::SQLException
|
||||
SQLRETURN Construct( const OUString& url,const css::uno::Sequence< css::beans::PropertyValue >& info);
|
||||
|
||||
|
|
|
@ -114,10 +114,7 @@ namespace connectivity::odbc
|
|||
ODatabaseMetaDataResultSet(OConnection* _pConnection);
|
||||
|
||||
|
||||
oslGenericFunction getOdbcFunction(ODBC3SQLFunctionId _nIndex) const
|
||||
{
|
||||
return m_pConnection->getOdbcFunction(_nIndex);
|
||||
}
|
||||
const Functions& functions() const { return m_pConnection->functions(); }
|
||||
// ::cppu::OComponentHelper
|
||||
virtual void SAL_CALL disposing() override;
|
||||
// XInterface
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include <odbc/odbcbasedllapi.hxx>
|
||||
#include <connectivity/CommonTools.hxx>
|
||||
#include <osl/module.h>
|
||||
#include <odbc/OFunctions.hxx>
|
||||
#include <odbc/OTools.hxx>
|
||||
|
||||
namespace connectivity::odbc
|
||||
|
@ -43,16 +44,15 @@ namespace connectivity::odbc
|
|||
// for this Driver
|
||||
|
||||
css::uno::Reference< css::uno::XComponentContext > m_xContext;
|
||||
SQLHANDLE m_pDriverHandle;
|
||||
|
||||
virtual SQLHANDLE EnvironmentHandle(OUString &_rPath) = 0;
|
||||
virtual SQLHANDLE EnvironmentHandle() = 0;
|
||||
|
||||
public:
|
||||
|
||||
ODBCDriver(css::uno::Reference< css::uno::XComponentContext > xContext);
|
||||
|
||||
// only possibility to get the odbc functions
|
||||
virtual oslGenericFunction getOdbcFunction(ODBC3SQLFunctionId _nIndex) const = 0;
|
||||
virtual const Functions& functions() const = 0;
|
||||
// OComponentHelper
|
||||
virtual void SAL_CALL disposing() override;
|
||||
|
||||
|
|
|
@ -19,581 +19,302 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <sal/config.h>
|
||||
|
||||
#include <connectivity/odbc.hxx>
|
||||
#include <rtl/ustring.hxx>
|
||||
#include <osl/module.h>
|
||||
#include <odbc/OTools.hxx>
|
||||
|
||||
namespace connectivity
|
||||
namespace connectivity::odbc
|
||||
{
|
||||
// All ODBC wrapper method signatures must match respective SQL* ODBC API functions exactly
|
||||
class Functions
|
||||
{
|
||||
public:
|
||||
virtual bool has(ODBC3SQLFunctionId id) const = 0;
|
||||
|
||||
// sal_Bool LoadFunctions(oslModule pODBCso, sal_Bool _bDS=sal_True);
|
||||
bool LoadLibrary_ODBC3(OUString &_rPath);
|
||||
// sal_Bool LoadLibrary_ADABAS(OUString &_rPath);
|
||||
|
||||
// Connecting to a data source
|
||||
typedef SQLRETURN (SQL_API *T3SQLAllocHandle) (SQLSMALLINT HandleType,SQLHANDLE InputHandle,SQLHANDLE * OutputHandlePtr);
|
||||
|
||||
#define N3SQLAllocHandle(a,b,c) (*reinterpret_cast<T3SQLAllocHandle>(getOdbcFunction(ODBC3SQLFunctionId::AllocHandle)))(a,b,c)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLConnect) (SQLHDBC ConnectionHandle,SQLCHAR *ServerName,SQLSMALLINT NameLength1,SQLCHAR *UserName,SQLSMALLINT NameLength2,SQLCHAR *Authentication,SQLSMALLINT NameLength3);
|
||||
|
||||
#define N3SQLConnect(a,b,c,d,e,f,g) (*reinterpret_cast<T3SQLConnect>(getOdbcFunction(ODBC3SQLFunctionId::Connect)))(a,b,c,d,e,f,g)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLDriverConnect) ( SQLHDBC ConnectionHandle,
|
||||
HWND WindowHandle,
|
||||
SQLCHAR * InConnectionString,
|
||||
SQLSMALLINT StringLength1,
|
||||
SQLCHAR * OutConnectionString,
|
||||
SQLSMALLINT BufferLength,
|
||||
SQLSMALLINT * StringLength2Ptr,
|
||||
SQLUSMALLINT DriverCompletion);
|
||||
|
||||
#define N3SQLDriverConnect(a,b,c,d,e,f,g,h) (*reinterpret_cast<T3SQLDriverConnect>(getOdbcFunction(ODBC3SQLFunctionId::DriverConnect)))(a,b,c,d,e,f,g,h)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLBrowseConnect) ( SQLHDBC ConnectionHandle,
|
||||
SQLCHAR * InConnectionString,
|
||||
SQLSMALLINT StringLength1,
|
||||
SQLCHAR * OutConnectionString,
|
||||
SQLSMALLINT BufferLength,
|
||||
SQLSMALLINT * StringLength2Ptr);
|
||||
|
||||
#define N3SQLBrowseConnect(a,b,c,d,e,f) (*reinterpret_cast<T3SQLBrowseConnect>(getOdbcFunction(ODBC3SQLFunctionId::BrowseConnect)))(a,b,c,d,e,f)
|
||||
|
||||
virtual SQLRETURN AllocHandle(SQLSMALLINT HandleType,
|
||||
SQLHANDLE InputHandle,
|
||||
SQLHANDLE* OutputHandlePtr) const = 0;
|
||||
virtual SQLRETURN DriverConnect(SQLHDBC ConnectionHandle,
|
||||
HWND WindowHandle,
|
||||
SQLCHAR* InConnectionString,
|
||||
SQLSMALLINT StringLength1,
|
||||
SQLCHAR* OutConnectionString,
|
||||
SQLSMALLINT BufferLength,
|
||||
SQLSMALLINT* StringLength2Ptr,
|
||||
SQLUSMALLINT DriverCompletion) const = 0;
|
||||
// Obtaining information about a driver and data source
|
||||
typedef SQLRETURN (SQL_API *T3SQLDataSources) ( SQLHENV EnvironmentHandle,
|
||||
SQLUSMALLINT Direction,
|
||||
SQLCHAR * ServerName,
|
||||
SQLSMALLINT BufferLength1,
|
||||
SQLSMALLINT * NameLength1Ptr,
|
||||
SQLCHAR * Description,
|
||||
SQLSMALLINT BufferLength2,
|
||||
SQLSMALLINT * NameLength2Ptr);
|
||||
|
||||
#define N3SQLDataSources(a,b,c,d,e,f,g,h) (*reinterpret_cast<T3SQLDataSources>(getOdbcFunction(ODBC3SQLFunctionId::DataSources)))(a,b,c,d,e,f,g,h)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLDrivers) ( SQLHENV EnvironmentHandle,
|
||||
SQLUSMALLINT Direction,
|
||||
SQLCHAR * DriverDescription,
|
||||
SQLSMALLINT BufferLength1,
|
||||
SQLSMALLINT * DescriptionLengthPtr,
|
||||
SQLCHAR * DriverAttributes,
|
||||
SQLSMALLINT BufferLength2,
|
||||
SQLSMALLINT * AttributesLengthPtr);
|
||||
|
||||
#define N3SQLDrivers(a,b,c,d,e,f,g,h) (*reinterpret_cast<T3SQLDrivers>(getOdbcFunction(ODBC3SQLFunctionId::Drivers)))(a,b,c,d,e,f,g,h)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLGetInfo) ( SQLHDBC ConnectionHandle,
|
||||
SQLUSMALLINT InfoType,
|
||||
SQLPOINTER InfoValuePtr,
|
||||
SQLSMALLINT BufferLength,
|
||||
SQLSMALLINT * StringLengthPtr);
|
||||
|
||||
#define N3SQLGetInfo(a,b,c,d,e) (*reinterpret_cast<T3SQLGetInfo>(getOdbcFunction(ODBC3SQLFunctionId::GetInfo)))(a,b,c,d,e)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLGetFunctions) (SQLHDBC ConnectionHandle,
|
||||
SQLUSMALLINT FunctionId,
|
||||
SQLUSMALLINT * SupportedPtr);
|
||||
|
||||
#define N3SQLGetFunctions(a,b,c) (*reinterpret_cast<T3SQLGetFunctions>(getOdbcFunction(ODBC3SQLFunctionId::GetFunctions)))(a,b,c)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLGetTypeInfo) ( SQLHSTMT StatementHandle,
|
||||
SQLSMALLINT DataType);
|
||||
|
||||
#define N3SQLGetTypeInfo(a,b) (*reinterpret_cast<T3SQLGetTypeInfo>(getOdbcFunction(ODBC3SQLFunctionId::GetTypeInfo)))(a,b)
|
||||
|
||||
virtual SQLRETURN GetInfo(SQLHDBC ConnectionHandle,
|
||||
SQLUSMALLINT InfoType,
|
||||
SQLPOINTER InfoValuePtr,
|
||||
SQLSMALLINT BufferLength,
|
||||
SQLSMALLINT* StringLengthPtr) const = 0;
|
||||
virtual SQLRETURN GetFunctions(SQLHDBC ConnectionHandle,
|
||||
SQLUSMALLINT FunctionId,
|
||||
SQLUSMALLINT* SupportedPtr) const = 0;
|
||||
virtual SQLRETURN GetTypeInfo(SQLHSTMT StatementHandle, SQLSMALLINT DataType) const = 0;
|
||||
// Setting and retrieving driver attributes
|
||||
typedef SQLRETURN (SQL_API *T3SQLSetConnectAttr)(SQLHDBC ConnectionHandle,
|
||||
SQLINTEGER Attribute,
|
||||
SQLPOINTER ValuePtr,
|
||||
SQLINTEGER StringLength);
|
||||
|
||||
#define N3SQLSetConnectAttr(a,b,c,d) (*reinterpret_cast<T3SQLSetConnectAttr>(getOdbcFunction(ODBC3SQLFunctionId::SetConnectAttr)))(a,b,c,d)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLGetConnectAttr) (SQLHDBC ConnectionHandle,
|
||||
SQLINTEGER Attribute,
|
||||
SQLPOINTER ValuePtr,
|
||||
SQLINTEGER BufferLength,
|
||||
SQLINTEGER* StringLength);
|
||||
|
||||
#define N3SQLGetConnectAttr(a,b,c,d,e) (*reinterpret_cast<T3SQLGetConnectAttr>(getOdbcFunction(ODBC3SQLFunctionId::GetConnectAttr)))(a,b,c,d,e)
|
||||
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLSetEnvAttr) ( SQLHENV EnvironmentHandle,
|
||||
SQLINTEGER Attribute,
|
||||
SQLPOINTER ValuePtr,
|
||||
SQLINTEGER StringLength);
|
||||
|
||||
#define N3SQLSetEnvAttr(a,b,c,d) (*reinterpret_cast<T3SQLSetEnvAttr>(getOdbcFunction(ODBC3SQLFunctionId::SetEnvAttr)))(a,b,c,d)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLGetEnvAttr) ( SQLHENV EnvironmentHandle,
|
||||
SQLINTEGER Attribute,
|
||||
SQLPOINTER ValuePtr,
|
||||
SQLINTEGER BufferLength,
|
||||
SQLINTEGER* StringLength);
|
||||
|
||||
#define N3SQLGetEnvAttr(a,b,c,d,e) (*reinterpret_cast<T3SQLGetEnvAttr>(getOdbcFunction(ODBC3SQLFunctionId::GetEnvAttr)))(a,b,c,d,e)
|
||||
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLSetStmtAttr) ( SQLHSTMT StatementHandle,
|
||||
SQLINTEGER Attribute,
|
||||
SQLPOINTER ValuePtr,
|
||||
SQLINTEGER StringLength);
|
||||
|
||||
#define N3SQLSetStmtAttr(a,b,c,d) (*reinterpret_cast<T3SQLSetStmtAttr>(getOdbcFunction(ODBC3SQLFunctionId::SetStmtAttr)))(a,b,c,d)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLGetStmtAttr) ( SQLHSTMT StatementHandle,
|
||||
SQLINTEGER Attribute,
|
||||
SQLPOINTER ValuePtr,
|
||||
SQLINTEGER BufferLength,
|
||||
SQLINTEGER* StringLength);
|
||||
|
||||
#define N3SQLGetStmtAttr(a,b,c,d,e) (*reinterpret_cast<T3SQLGetStmtAttr>(getOdbcFunction(ODBC3SQLFunctionId::GetStmtAttr)))(a,b,c,d,e)
|
||||
|
||||
virtual SQLRETURN SetConnectAttr(SQLHDBC ConnectionHandle,
|
||||
SQLINTEGER Attribute,
|
||||
SQLPOINTER ValuePtr,
|
||||
SQLINTEGER StringLength) const = 0;
|
||||
virtual SQLRETURN GetConnectAttr(SQLHDBC ConnectionHandle,
|
||||
SQLINTEGER Attribute,
|
||||
SQLPOINTER ValuePtr,
|
||||
SQLINTEGER BufferLength,
|
||||
SQLINTEGER* StringLength) const = 0;
|
||||
virtual SQLRETURN SetEnvAttr(SQLHENV EnvironmentHandle,
|
||||
SQLINTEGER Attribute,
|
||||
SQLPOINTER ValuePtr,
|
||||
SQLINTEGER StringLength) const = 0;
|
||||
virtual SQLRETURN GetEnvAttr(SQLHENV EnvironmentHandle,
|
||||
SQLINTEGER Attribute,
|
||||
SQLPOINTER ValuePtr,
|
||||
SQLINTEGER BufferLength,
|
||||
SQLINTEGER* StringLength) const = 0;
|
||||
virtual SQLRETURN SetStmtAttr(SQLHSTMT StatementHandle,
|
||||
SQLINTEGER Attribute,
|
||||
SQLPOINTER ValuePtr,
|
||||
SQLINTEGER StringLength) const = 0;
|
||||
virtual SQLRETURN GetStmtAttr(SQLHSTMT StatementHandle,
|
||||
SQLINTEGER Attribute,
|
||||
SQLPOINTER ValuePtr,
|
||||
SQLINTEGER BufferLength,
|
||||
SQLINTEGER* StringLength) const = 0;
|
||||
// Setting and retrieving descriptor fields
|
||||
/*typedef SQLRETURN (SQL_API *T3SQLSetDescField) (SQLHDESC DescriptorHandle,
|
||||
SQLSMALLINT RecNumber,
|
||||
SQLSMALLINT FieldIdentifier,
|
||||
SQLPOINTER ValuePtr,
|
||||
SQLINTEGER BufferLength);
|
||||
|
||||
#define N3SQLSetDescField(a,b,c,d,e) (*reinterpret_cast<T3SQLSetDescField>(getOdbcFunction(ODBC3SQLFunctionId::SetDescField)))(a,b,c,d,e)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLGetDescField) ( SQLHDESC DescriptorHandle,
|
||||
SQLSMALLINT RecNumber,
|
||||
SQLSMALLINT FieldIdentifier,
|
||||
SQLPOINTER ValuePtr,
|
||||
SQLINTEGER BufferLength,
|
||||
SQLINTEGER * StringLengthPtr);
|
||||
|
||||
#define N3SQLGetDescField(a,b,c,d,e,f) (*reinterpret_cast<T3SQLGetDescField>(getOdbcFunction(ODBC3SQLFunctionId::GetDescField)))(a,b,c,d,e,f)
|
||||
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLGetDescRec) ( SQLHDESC DescriptorHandle,
|
||||
SQLSMALLINT RecNumber,
|
||||
SQLCHAR * Name,
|
||||
SQLSMALLINT BufferLength,
|
||||
SQLSMALLINT * StringLengthPtr,
|
||||
SQLSMALLINT * TypePtr,
|
||||
SQLSMALLINT * SubTypePtr,
|
||||
SQLLEN * LengthPtr,
|
||||
SQLSMALLINT * PrecisionPtr,
|
||||
SQLSMALLINT * ScalePtr,
|
||||
SQLSMALLINT * NullablePtr);
|
||||
|
||||
#define N3SQLGetDescRec(a,b,c,d,e,f,g,h,i,j,k) (*reinterpret_cast<T3SQLGetDescRec>(getOdbcFunction(ODBC3SQLFunctionId::GetDescRec)))(a,b,c,d,e,f,g,h,i,j,k)
|
||||
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLSetDescRec) ( SQLHDESC DescriptorHandle,
|
||||
SQLSMALLINT RecNumber,
|
||||
SQLSMALLINT Type,
|
||||
SQLSMALLINT SubType,
|
||||
SQLLEN Length,
|
||||
SQLSMALLINT Precision,
|
||||
SQLSMALLINT Scale,
|
||||
SQLPOINTER DataPtr,
|
||||
SQLLEN * StringLengthPtr,
|
||||
SQLLEN * IndicatorPtr);
|
||||
|
||||
#define N3SQLSetDescRec(a,b,c,d,e,f,g,h,i,j) (*reinterpret_cast<T3SQLSetDescRec>(getOdbcFunction(ODBC3SQLFunctionId::SetDescRec)))(a,b,c,d,e,f,g,h,i,j)
|
||||
/*
|
||||
virtual SQLRETURN SetDescField(SQLHDESC DescriptorHandle,
|
||||
SQLSMALLINT RecNumber,
|
||||
SQLSMALLINT FieldIdentifier,
|
||||
SQLPOINTER ValuePtr,
|
||||
SQLINTEGER BufferLength) const = 0;
|
||||
virtual SQLRETURN GetDescField(SQLHDESC DescriptorHandle,
|
||||
SQLSMALLINT RecNumber,
|
||||
SQLSMALLINT FieldIdentifier,
|
||||
SQLPOINTER ValuePtr,
|
||||
SQLINTEGER BufferLength,
|
||||
SQLINTEGER* StringLengthPtr) const = 0;
|
||||
virtual SQLRETURN GetDescRec(SQLHDESC DescriptorHandle,
|
||||
SQLSMALLINT RecNumber,
|
||||
SQLCHAR* Name,
|
||||
SQLSMALLINT BufferLength,
|
||||
SQLSMALLINT* StringLengthPtr,
|
||||
SQLSMALLINT* TypePtr,
|
||||
SQLSMALLINT* SubTypePtr,
|
||||
SQLLEN* LengthPtr,
|
||||
SQLSMALLINT* PrecisionPtr,
|
||||
SQLSMALLINT* ScalePtr,
|
||||
SQLSMALLINT* NullablePtr) const = 0;
|
||||
virtual SQLRETURN SetDescRec(SQLHDESC DescriptorHandle,
|
||||
SQLSMALLINT RecNumber,
|
||||
SQLSMALLINT Type,
|
||||
SQLSMALLINT SubType,
|
||||
SQLLEN Length,
|
||||
SQLSMALLINT Precision,
|
||||
SQLSMALLINT Scale,
|
||||
SQLPOINTER DataPtr,
|
||||
SQLLEN* StringLengthPtr,
|
||||
SQLLEN* IndicatorPtr) const = 0;
|
||||
*/
|
||||
|
||||
// Preparing SQL requests
|
||||
typedef SQLRETURN (SQL_API *T3SQLPrepare) ( SQLHSTMT StatementHandle,
|
||||
SQLCHAR * StatementText,
|
||||
SQLINTEGER TextLength);
|
||||
|
||||
#define N3SQLPrepare(a,b,c) (*reinterpret_cast<T3SQLPrepare>(getOdbcFunction(ODBC3SQLFunctionId::Prepare)))(a,b,c)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLBindParameter) (SQLHSTMT StatementHandle,
|
||||
SQLUSMALLINT ParameterNumber,
|
||||
SQLSMALLINT InputOutputType,
|
||||
SQLSMALLINT ValueType,
|
||||
SQLSMALLINT ParameterType,
|
||||
SQLULEN ColumnSize,
|
||||
SQLSMALLINT DecimalDigits,
|
||||
SQLPOINTER ParameterValuePtr,
|
||||
SQLLEN BufferLength,
|
||||
SQLLEN * StrLen_or_IndPtr);
|
||||
|
||||
#define N3SQLBindParameter(a,b,c,d,e,f,g,h,i,j) (*reinterpret_cast<T3SQLBindParameter>(getOdbcFunction(ODBC3SQLFunctionId::BindParameter)))(a,b,c,d,e,f,g,h,i,j)
|
||||
|
||||
/*typedef SQLRETURN (SQL_API *T3SQLGetCursorName) (SQLHSTMT StatementHandle,
|
||||
SQLCHAR * CursorName,
|
||||
SQLSMALLINT BufferLength,
|
||||
SQLSMALLINT * NameLengthPtr);
|
||||
|
||||
#define N3SQLGetCursorName(a,b,c,d) (*reinterpret_cast<T3SQLGetCursorName>(getOdbcFunction(ODBC3SQLFunctionId::GetCursorName)))(a,b,c,d)
|
||||
virtual SQLRETURN Prepare(SQLHSTMT StatementHandle,
|
||||
SQLCHAR* StatementText,
|
||||
SQLINTEGER TextLength) const = 0;
|
||||
virtual SQLRETURN BindParameter(SQLHSTMT StatementHandle,
|
||||
SQLUSMALLINT ParameterNumber,
|
||||
SQLSMALLINT InputOutputType,
|
||||
SQLSMALLINT ValueType,
|
||||
SQLSMALLINT ParameterType,
|
||||
SQLULEN ColumnSize,
|
||||
SQLSMALLINT DecimalDigits,
|
||||
SQLPOINTER ParameterValuePtr,
|
||||
SQLLEN BufferLength,
|
||||
SQLLEN* StrLen_or_IndPtr) const = 0;
|
||||
/*
|
||||
virtual SQLRETURN GetCursorName(SQLHSTMT StatementHandle,
|
||||
SQLCHAR* CursorName,
|
||||
SQLSMALLINT BufferLength,
|
||||
SQLSMALLINT* NameLengthPtr) const = 0;
|
||||
*/
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLSetCursorName) (SQLHSTMT StatementHandle,
|
||||
SQLCHAR * CursorName,
|
||||
SQLSMALLINT NameLength);
|
||||
|
||||
#define N3SQLSetCursorName(a,b,c) (*reinterpret_cast<T3SQLSetCursorName>(getOdbcFunction(ODBC3SQLFunctionId::SetCursorName)))(a,b,c)
|
||||
|
||||
virtual SQLRETURN SetCursorName(SQLHSTMT StatementHandle,
|
||||
SQLCHAR* CursorName,
|
||||
SQLSMALLINT NameLength) const = 0;
|
||||
// Submitting requests
|
||||
typedef SQLRETURN (SQL_API *T3SQLExecute) ( SQLHSTMT StatementHandle);
|
||||
|
||||
#define N3SQLExecute(a) (*reinterpret_cast<T3SQLExecute>(getOdbcFunction(ODBC3SQLFunctionId::Execute)))(a)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLExecDirect) ( SQLHSTMT StatementHandle,
|
||||
SQLCHAR * StatementText,
|
||||
SQLINTEGER TextLength);
|
||||
|
||||
#define N3SQLExecDirect(a,b,c) (*reinterpret_cast<T3SQLExecDirect>(getOdbcFunction(ODBC3SQLFunctionId::ExecDirect)))(a,b,c)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLDescribeParam) (SQLHSTMT StatementHandle,
|
||||
SQLUSMALLINT ParameterNumber,
|
||||
SQLSMALLINT * DataTypePtr,
|
||||
SQLULEN * ParameterSizePtr,
|
||||
SQLSMALLINT * DecimalDigitsPtr,
|
||||
SQLSMALLINT * NullablePtr);
|
||||
|
||||
#define N3SQLDescribeParam(a,b,c,d,e,f) (*reinterpret_cast<T3SQLDescribeParam>(getOdbcFunction(ODBC3SQLFunctionId::DescribeParam)))(a,b,c,d,e,f)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLNumParams) ( SQLHSTMT StatementHandle,
|
||||
SQLSMALLINT * ParameterCountPtr);
|
||||
|
||||
#define N3SQLNumParams(a,b) (*reinterpret_cast<T3SQLNumParams>(getOdbcFunction(ODBC3SQLFunctionId::NumParams)))(a,b)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLParamData) ( SQLHSTMT StatementHandle,
|
||||
SQLPOINTER * ValuePtrPtr);
|
||||
|
||||
#define N3SQLParamData(a,b) (*reinterpret_cast<T3SQLParamData>(getOdbcFunction(ODBC3SQLFunctionId::ParamData)))(a,b)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLPutData) ( SQLHSTMT StatementHandle,
|
||||
SQLPOINTER DataPtr,
|
||||
SQLLEN StrLen_or_Ind);
|
||||
|
||||
#define N3SQLPutData(a,b,c) (*reinterpret_cast<T3SQLPutData>(getOdbcFunction(ODBC3SQLFunctionId::PutData)))(a,b,c)
|
||||
|
||||
virtual SQLRETURN Execute(SQLHSTMT StatementHandle) const = 0;
|
||||
virtual SQLRETURN ExecDirect(SQLHSTMT StatementHandle,
|
||||
SQLCHAR* StatementText,
|
||||
SQLINTEGER TextLength) const = 0;
|
||||
virtual SQLRETURN DescribeParam(SQLHSTMT StatementHandle,
|
||||
SQLUSMALLINT ParameterNumber,
|
||||
SQLSMALLINT* DataTypePtr,
|
||||
SQLULEN* ParameterSizePtr,
|
||||
SQLSMALLINT* DecimalDigitsPtr,
|
||||
SQLSMALLINT* NullablePtr) const = 0;
|
||||
virtual SQLRETURN NumParams(SQLHSTMT StatementHandle, SQLSMALLINT* ParameterCountPtr) const = 0;
|
||||
virtual SQLRETURN ParamData(SQLHSTMT StatementHandle, SQLPOINTER* ValuePtrPtr) const = 0;
|
||||
virtual SQLRETURN PutData(SQLHSTMT StatementHandle,
|
||||
SQLPOINTER DataPtr,
|
||||
SQLLEN StrLen_or_Ind) const = 0;
|
||||
// Retrieving results and information about results
|
||||
typedef SQLRETURN (SQL_API *T3SQLRowCount) ( SQLHSTMT StatementHandle,
|
||||
SQLLEN * RowCountPtr);
|
||||
|
||||
#define N3SQLRowCount(a,b) (*reinterpret_cast<T3SQLRowCount>(getOdbcFunction(ODBC3SQLFunctionId::RowCount)))(a,b)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLNumResultCols) (SQLHSTMT StatementHandle,
|
||||
SQLSMALLINT * ColumnCountPtr);
|
||||
|
||||
#define N3SQLNumResultCols(a,b) (*reinterpret_cast<T3SQLNumResultCols>(getOdbcFunction(ODBC3SQLFunctionId::NumResultCols)))(a,b)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLDescribeCol) ( SQLHSTMT StatementHandle,
|
||||
SQLUSMALLINT ColumnNumber,
|
||||
SQLCHAR * ColumnName,
|
||||
SQLSMALLINT BufferLength,
|
||||
SQLSMALLINT * NameLengthPtr,
|
||||
SQLSMALLINT * DataTypePtr,
|
||||
SQLULEN * ColumnSizePtr,
|
||||
SQLSMALLINT * DecimalDigitsPtr,
|
||||
SQLSMALLINT * NullablePtr);
|
||||
|
||||
#define N3SQLDescribeCol(a,b,c,d,e,f,g,h,i) (*reinterpret_cast<T3SQLDescribeCol>(getOdbcFunction(ODBC3SQLFunctionId::DescribeCol)))(a,b,c,d,e,f,g,h,i)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLColAttribute) (SQLHSTMT StatementHandle,
|
||||
SQLUSMALLINT ColumnNumber,
|
||||
SQLUSMALLINT FieldIdentifier,
|
||||
SQLPOINTER CharacterAttributePtr,
|
||||
SQLSMALLINT BufferLength,
|
||||
SQLSMALLINT * StringLengthPtr,
|
||||
SQLLEN * NumericAttributePtr);
|
||||
|
||||
#define N3SQLColAttribute(a,b,c,d,e,f,g) (*reinterpret_cast<T3SQLColAttribute>(getOdbcFunction(ODBC3SQLFunctionId::ColAttribute)))(a,b,c,d,e,f,g)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLBindCol) ( SQLHSTMT StatementHandle,
|
||||
SQLUSMALLINT ColumnNumber,
|
||||
SQLSMALLINT TargetType,
|
||||
SQLPOINTER TargetValuePtr,
|
||||
SQLLEN BufferLength,
|
||||
SQLLEN * StrLen_or_IndPtr);
|
||||
|
||||
#define N3SQLBindCol(a,b,c,d,e,f) (*reinterpret_cast<T3SQLBindCol>(getOdbcFunction(ODBC3SQLFunctionId::BindCol)))(a,b,c,d,e,f)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLFetch) ( SQLHSTMT StatementHandle);
|
||||
|
||||
#define N3SQLFetch(a) (*reinterpret_cast<T3SQLFetch>(getOdbcFunction(ODBC3SQLFunctionId::Fetch)))(a)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLFetchScroll) ( SQLHSTMT StatementHandle,
|
||||
SQLSMALLINT FetchOrientation,
|
||||
SQLLEN FetchOffset);
|
||||
|
||||
#define N3SQLFetchScroll(a,b,c) (*reinterpret_cast<T3SQLFetchScroll>(getOdbcFunction(ODBC3SQLFunctionId::FetchScroll)))(a,b,c)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLGetData) ( SQLHSTMT StatementHandle,
|
||||
SQLUSMALLINT ColumnNumber,
|
||||
SQLSMALLINT TargetType,
|
||||
SQLPOINTER TargetValuePtr,
|
||||
SQLLEN BufferLength,
|
||||
SQLLEN * StrLen_or_IndPtr);
|
||||
|
||||
#define N3SQLGetData(a,b,c,d,e,f) (*reinterpret_cast<T3SQLGetData>(getOdbcFunction(ODBC3SQLFunctionId::GetData)))(a,b,c,d,e,f)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLSetPos) ( SQLHSTMT StatementHandle,
|
||||
SQLSETPOSIROW RowNumber,
|
||||
SQLUSMALLINT Operation,
|
||||
SQLUSMALLINT LockType);
|
||||
|
||||
#define N3SQLSetPos(a,b,c,d) (*reinterpret_cast<T3SQLSetPos>(getOdbcFunction(ODBC3SQLFunctionId::SetPos)))(a,b,c,d)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLBulkOperations) ( SQLHSTMT StatementHandle,
|
||||
SQLSMALLINT Operation);
|
||||
|
||||
#define N3SQLBulkOperations(a,b) (*reinterpret_cast<T3SQLBulkOperations>(getOdbcFunction(ODBC3SQLFunctionId::BulkOperations)))(a,b)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLMoreResults) ( SQLHSTMT StatementHandle);
|
||||
|
||||
#define N3SQLMoreResults(a) (*reinterpret_cast<T3SQLMoreResults>(getOdbcFunction(ODBC3SQLFunctionId::MoreResults)))(a)
|
||||
|
||||
/*typedef SQLRETURN (SQL_API *T3SQLGetDiagField) (SQLSMALLINT HandleType,
|
||||
SQLHANDLE Handle,
|
||||
SQLSMALLINT RecNumber,
|
||||
SQLSMALLINT DiagIdentifier,
|
||||
SQLPOINTER DiagInfoPtr,
|
||||
SQLSMALLINT BufferLength,
|
||||
SQLSMALLINT * StringLengthPtr);
|
||||
|
||||
#define N3SQLGetDiagField(a,b,c,d,e,f,g) (*reinterpret_cast<T3SQLGetDiagField>(getOdbcFunction(ODBC3SQLFunctionId::GetDiagField)))(a,b,c,d,e,f,g)*/
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLGetDiagRec) ( SQLSMALLINT HandleType,
|
||||
SQLHANDLE Handle,
|
||||
SQLSMALLINT RecNumber,
|
||||
SQLCHAR * Sqlstate,
|
||||
SQLINTEGER * NativeErrorPtr,
|
||||
SQLCHAR * MessageText,
|
||||
SQLSMALLINT BufferLength,
|
||||
SQLSMALLINT * TextLengthPtr);
|
||||
|
||||
|
||||
#define N3SQLGetDiagRec(a,b,c,d,e,f,g,h) (*reinterpret_cast<T3SQLGetDiagRec>(getOdbcFunction(ODBC3SQLFunctionId::GetDiagRec)))(a,b,c,d,e,f,g,h)
|
||||
|
||||
virtual SQLRETURN RowCount(SQLHSTMT StatementHandle, SQLLEN* RowCountPtr) const = 0;
|
||||
virtual SQLRETURN NumResultCols(SQLHSTMT StatementHandle, SQLSMALLINT* ColumnCountPtr) const = 0;
|
||||
virtual SQLRETURN ColAttribute(SQLHSTMT StatementHandle,
|
||||
SQLUSMALLINT ColumnNumber,
|
||||
SQLUSMALLINT FieldIdentifier,
|
||||
SQLPOINTER CharacterAttributePtr,
|
||||
SQLSMALLINT BufferLength,
|
||||
SQLSMALLINT* StringLengthPtr,
|
||||
SQLLEN* NumericAttributePtr) const = 0;
|
||||
virtual SQLRETURN BindCol(SQLHSTMT StatementHandle,
|
||||
SQLUSMALLINT ColumnNumber,
|
||||
SQLSMALLINT TargetType,
|
||||
SQLPOINTER TargetValuePtr,
|
||||
SQLLEN BufferLength,
|
||||
SQLLEN* StrLen_or_IndPtr) const = 0;
|
||||
virtual SQLRETURN Fetch(SQLHSTMT StatementHandle) const = 0;
|
||||
virtual SQLRETURN FetchScroll(SQLHSTMT StatementHandle,
|
||||
SQLSMALLINT FetchOrientation,
|
||||
SQLLEN FetchOffset) const = 0;
|
||||
virtual SQLRETURN GetData(SQLHSTMT StatementHandle,
|
||||
SQLUSMALLINT ColumnNumber,
|
||||
SQLSMALLINT TargetType,
|
||||
SQLPOINTER TargetValuePtr,
|
||||
SQLLEN BufferLength,
|
||||
SQLLEN* StrLen_or_IndPtr) const = 0;
|
||||
virtual SQLRETURN SetPos(SQLHSTMT StatementHandle,
|
||||
SQLSETPOSIROW RowNumber,
|
||||
SQLUSMALLINT Operation,
|
||||
SQLUSMALLINT LockType) const = 0;
|
||||
virtual SQLRETURN BulkOperations(SQLHSTMT StatementHandle, SQLSMALLINT Operation) const = 0;
|
||||
virtual SQLRETURN MoreResults(SQLHSTMT StatementHandle) const = 0;
|
||||
/*
|
||||
virtual SQLRETURN GetDiagField(SQLSMALLINT HandleType,
|
||||
SQLHANDLE Handle,
|
||||
SQLSMALLINT RecNumber,
|
||||
SQLSMALLINT DiagIdentifier,
|
||||
SQLPOINTER DiagInfoPtr,
|
||||
SQLSMALLINT BufferLength,
|
||||
SQLSMALLINT* StringLengthPtr) const = 0;
|
||||
*/
|
||||
virtual SQLRETURN GetDiagRec(SQLSMALLINT HandleType,
|
||||
SQLHANDLE Handle,
|
||||
SQLSMALLINT RecNumber,
|
||||
SQLCHAR* Sqlstate,
|
||||
SQLINTEGER* NativeErrorPtr,
|
||||
SQLCHAR* MessageText,
|
||||
SQLSMALLINT BufferLength,
|
||||
SQLSMALLINT* TextLengthPtr) const = 0;
|
||||
// Obtaining information about the data source's system tables (catalog functions)
|
||||
typedef SQLRETURN (SQL_API *T3SQLColumnPrivileges) (SQLHSTMT StatementHandle,
|
||||
SQLCHAR * CatalogName,
|
||||
SQLSMALLINT NameLength1,
|
||||
SQLCHAR * SchemaName,
|
||||
SQLSMALLINT NameLength2,
|
||||
SQLCHAR * TableName,
|
||||
SQLSMALLINT NameLength3,
|
||||
SQLCHAR * ColumnName,
|
||||
SQLSMALLINT NameLength4);
|
||||
|
||||
#define N3SQLColumnPrivileges(a,b,c,d,e,f,g,h,i) (*reinterpret_cast<T3SQLColumnPrivileges>(getOdbcFunction(ODBC3SQLFunctionId::ColumnPrivileges)))(a,b,c,d,e,f,g,h,i)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLColumns) ( SQLHSTMT StatementHandle,
|
||||
SQLCHAR * CatalogName,
|
||||
SQLSMALLINT NameLength1,
|
||||
SQLCHAR * SchemaName,
|
||||
SQLSMALLINT NameLength2,
|
||||
SQLCHAR * TableName,
|
||||
SQLSMALLINT NameLength3,
|
||||
SQLCHAR * ColumnName,
|
||||
SQLSMALLINT NameLength4);
|
||||
|
||||
#define N3SQLColumns(a,b,c,d,e,f,g,h,i) (*reinterpret_cast<T3SQLColumns>(getOdbcFunction(ODBC3SQLFunctionId::Columns)))(a,b,c,d,e,f,g,h,i)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLForeignKeys) ( SQLHSTMT StatementHandle,
|
||||
SQLCHAR * PKCatalogName,
|
||||
SQLSMALLINT NameLength1,
|
||||
SQLCHAR * PKSchemaName,
|
||||
SQLSMALLINT NameLength2,
|
||||
SQLCHAR * PKTableName,
|
||||
SQLSMALLINT NameLength3,
|
||||
SQLCHAR * FKCatalogName,
|
||||
SQLSMALLINT NameLength4,
|
||||
SQLCHAR * FKSchemaName,
|
||||
SQLSMALLINT NameLength5,
|
||||
SQLCHAR * FKTableName,
|
||||
SQLSMALLINT NameLength6);
|
||||
|
||||
#define N3SQLForeignKeys(a,b,c,d,e,f,g,h,i,j,k,l,m) (*reinterpret_cast<T3SQLForeignKeys>(getOdbcFunction(ODBC3SQLFunctionId::ForeignKeys)))(a,b,c,d,e,f,g,h,i,j,k,l,m)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLPrimaryKeys) ( SQLHSTMT StatementHandle,
|
||||
SQLCHAR * CatalogName,
|
||||
SQLSMALLINT NameLength1,
|
||||
SQLCHAR * SchemaName,
|
||||
SQLSMALLINT NameLength2,
|
||||
SQLCHAR * TableName,
|
||||
SQLSMALLINT NameLength3);
|
||||
|
||||
#define N3SQLPrimaryKeys(a,b,c,d,e,f,g) (*reinterpret_cast<T3SQLPrimaryKeys>(getOdbcFunction(ODBC3SQLFunctionId::PrimaryKeys)))(a,b,c,d,e,f,g)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLProcedureColumns) (SQLHSTMT StatementHandle,
|
||||
SQLCHAR * CatalogName,
|
||||
SQLSMALLINT NameLength1,
|
||||
SQLCHAR * SchemaName,
|
||||
SQLSMALLINT NameLength2,
|
||||
SQLCHAR * ProcName,
|
||||
SQLSMALLINT NameLength3,
|
||||
SQLCHAR * ColumnName,
|
||||
SQLSMALLINT NameLength4);
|
||||
|
||||
#define N3SQLProcedureColumns(a,b,c,d,e,f,g,h,i) (*reinterpret_cast<T3SQLProcedureColumns>(getOdbcFunction(ODBC3SQLFunctionId::ProcedureColumns)))(a,b,c,d,e,f,g,h,i)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLProcedures) ( SQLHSTMT StatementHandle,
|
||||
SQLCHAR * CatalogName,
|
||||
SQLSMALLINT NameLength1,
|
||||
SQLCHAR * SchemaName,
|
||||
SQLSMALLINT NameLength2,
|
||||
SQLCHAR * ProcName,
|
||||
SQLSMALLINT NameLength3);
|
||||
|
||||
#define N3SQLProcedures(a,b,c,d,e,f,g) (*reinterpret_cast<T3SQLProcedures>(getOdbcFunction(ODBC3SQLFunctionId::Procedures)))(a,b,c,d,e,f,g)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLSpecialColumns) (SQLHSTMT StatementHandle,
|
||||
SQLUSMALLINT IdentifierType,
|
||||
SQLCHAR * CatalogName,
|
||||
SQLSMALLINT NameLength1,
|
||||
SQLCHAR * SchemaName,
|
||||
SQLSMALLINT NameLength2,
|
||||
SQLCHAR * TableName,
|
||||
SQLSMALLINT NameLength3,
|
||||
SQLUSMALLINT Scope,
|
||||
SQLUSMALLINT Nullable);
|
||||
|
||||
#define N3SQLSpecialColumns(a,b,c,d,e,f,g,h,i,j) (*reinterpret_cast<T3SQLSpecialColumns>(getOdbcFunction(ODBC3SQLFunctionId::SpecialColumns)))(a,b,c,d,e,f,g,h,i,j)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLStatistics) ( SQLHSTMT StatementHandle,
|
||||
SQLCHAR * CatalogName,
|
||||
SQLSMALLINT NameLength1,
|
||||
SQLCHAR * SchemaName,
|
||||
SQLSMALLINT NameLength2,
|
||||
SQLCHAR * TableName,
|
||||
SQLSMALLINT NameLength3,
|
||||
SQLUSMALLINT Unique,
|
||||
SQLUSMALLINT Reserved);
|
||||
|
||||
#define N3SQLStatistics(a,b,c,d,e,f,g,h,i) (*reinterpret_cast<T3SQLStatistics>(getOdbcFunction(ODBC3SQLFunctionId::Statistics)))(a,b,c,d,e,f,g,h,i)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLTablePrivileges) (SQLHSTMT StatementHandle,
|
||||
SQLCHAR * CatalogName,
|
||||
SQLSMALLINT NameLength1,
|
||||
SQLCHAR * SchemaName,
|
||||
SQLSMALLINT NameLength2,
|
||||
SQLCHAR * TableName,
|
||||
SQLSMALLINT NameLength3);
|
||||
|
||||
#define N3SQLTablePrivileges(a,b,c,d,e,f,g) (*reinterpret_cast<T3SQLTablePrivileges>(getOdbcFunction(ODBC3SQLFunctionId::TablePrivileges)))(a,b,c,d,e,f,g)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLTables) ( SQLHSTMT StatementHandle,
|
||||
SQLCHAR * CatalogName,
|
||||
SQLSMALLINT NameLength1,
|
||||
SQLCHAR * SchemaName,
|
||||
SQLSMALLINT NameLength2,
|
||||
SQLCHAR * TableName,
|
||||
SQLSMALLINT NameLength3,
|
||||
SQLCHAR * TableType,
|
||||
SQLSMALLINT NameLength4);
|
||||
|
||||
#define N3SQLTables(a,b,c,d,e,f,g,h,i) (*reinterpret_cast<T3SQLTables>(getOdbcFunction(ODBC3SQLFunctionId::Tables)))(a,b,c,d,e,f,g,h,i)
|
||||
|
||||
virtual SQLRETURN ColumnPrivileges(SQLHSTMT StatementHandle,
|
||||
SQLCHAR* CatalogName,
|
||||
SQLSMALLINT NameLength1,
|
||||
SQLCHAR* SchemaName,
|
||||
SQLSMALLINT NameLength2,
|
||||
SQLCHAR* TableName,
|
||||
SQLSMALLINT NameLength3,
|
||||
SQLCHAR* ColumnName,
|
||||
SQLSMALLINT NameLength4) const = 0;
|
||||
virtual SQLRETURN Columns(SQLHSTMT StatementHandle,
|
||||
SQLCHAR* CatalogName,
|
||||
SQLSMALLINT NameLength1,
|
||||
SQLCHAR* SchemaName,
|
||||
SQLSMALLINT NameLength2,
|
||||
SQLCHAR* TableName,
|
||||
SQLSMALLINT NameLength3,
|
||||
SQLCHAR* ColumnName,
|
||||
SQLSMALLINT NameLength4) const = 0;
|
||||
virtual SQLRETURN ForeignKeys(SQLHSTMT StatementHandle,
|
||||
SQLCHAR* PKCatalogName,
|
||||
SQLSMALLINT NameLength1,
|
||||
SQLCHAR* PKSchemaName,
|
||||
SQLSMALLINT NameLength2,
|
||||
SQLCHAR* PKTableName,
|
||||
SQLSMALLINT NameLength3,
|
||||
SQLCHAR* FKCatalogName,
|
||||
SQLSMALLINT NameLength4,
|
||||
SQLCHAR* FKSchemaName,
|
||||
SQLSMALLINT NameLength5,
|
||||
SQLCHAR* FKTableName,
|
||||
SQLSMALLINT NameLength6) const = 0;
|
||||
virtual SQLRETURN PrimaryKeys(SQLHSTMT StatementHandle,
|
||||
SQLCHAR* CatalogName,
|
||||
SQLSMALLINT NameLength1,
|
||||
SQLCHAR* SchemaName,
|
||||
SQLSMALLINT NameLength2,
|
||||
SQLCHAR* TableName,
|
||||
SQLSMALLINT NameLength3) const = 0;
|
||||
virtual SQLRETURN ProcedureColumns(SQLHSTMT StatementHandle,
|
||||
SQLCHAR* CatalogName,
|
||||
SQLSMALLINT NameLength1,
|
||||
SQLCHAR* SchemaName,
|
||||
SQLSMALLINT NameLength2,
|
||||
SQLCHAR* ProcName,
|
||||
SQLSMALLINT NameLength3,
|
||||
SQLCHAR* ColumnName,
|
||||
SQLSMALLINT NameLength4) const = 0;
|
||||
virtual SQLRETURN Procedures(SQLHSTMT StatementHandle,
|
||||
SQLCHAR* CatalogName,
|
||||
SQLSMALLINT NameLength1,
|
||||
SQLCHAR* SchemaName,
|
||||
SQLSMALLINT NameLength2,
|
||||
SQLCHAR* ProcName,
|
||||
SQLSMALLINT NameLength3) const = 0;
|
||||
virtual SQLRETURN SpecialColumns(SQLHSTMT StatementHandle,
|
||||
SQLUSMALLINT IdentifierType,
|
||||
SQLCHAR* CatalogName,
|
||||
SQLSMALLINT NameLength1,
|
||||
SQLCHAR* SchemaName,
|
||||
SQLSMALLINT NameLength2,
|
||||
SQLCHAR* TableName,
|
||||
SQLSMALLINT NameLength3,
|
||||
SQLUSMALLINT Scope,
|
||||
SQLUSMALLINT Nullable) const = 0;
|
||||
virtual SQLRETURN Statistics(SQLHSTMT StatementHandle,
|
||||
SQLCHAR* CatalogName,
|
||||
SQLSMALLINT NameLength1,
|
||||
SQLCHAR* SchemaName,
|
||||
SQLSMALLINT NameLength2,
|
||||
SQLCHAR* TableName,
|
||||
SQLSMALLINT NameLength3,
|
||||
SQLUSMALLINT Unique,
|
||||
SQLUSMALLINT Reserved) const = 0;
|
||||
virtual SQLRETURN TablePrivileges(SQLHSTMT StatementHandle,
|
||||
SQLCHAR* CatalogName,
|
||||
SQLSMALLINT NameLength1,
|
||||
SQLCHAR* SchemaName,
|
||||
SQLSMALLINT NameLength2,
|
||||
SQLCHAR* TableName,
|
||||
SQLSMALLINT NameLength3) const = 0;
|
||||
virtual SQLRETURN Tables(SQLHSTMT StatementHandle,
|
||||
SQLCHAR* CatalogName,
|
||||
SQLSMALLINT NameLength1,
|
||||
SQLCHAR* SchemaName,
|
||||
SQLSMALLINT NameLength2,
|
||||
SQLCHAR* TableName,
|
||||
SQLSMALLINT NameLength3,
|
||||
SQLCHAR* TableType,
|
||||
SQLSMALLINT NameLength4) const = 0;
|
||||
// Terminating a statement
|
||||
typedef SQLRETURN (SQL_API *T3SQLFreeStmt) ( SQLHSTMT StatementHandle,
|
||||
SQLUSMALLINT Option);
|
||||
|
||||
#define N3SQLFreeStmt(a,b) (*reinterpret_cast<T3SQLFreeStmt>(getOdbcFunction(ODBC3SQLFunctionId::FreeStmt)))(a,b)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLCloseCursor) (SQLHSTMT StatementHandle);
|
||||
|
||||
#define N3SQLCloseCursor(a) (*reinterpret_cast<T3SQLCloseCursor>(getOdbcFunction(ODBC3SQLFunctionId::CloseCursor)))(a)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLCancel) ( SQLHSTMT StatementHandle);
|
||||
|
||||
#define N3SQLCancel(a) (*reinterpret_cast<T3SQLCancel>(getOdbcFunction(ODBC3SQLFunctionId::Cancel)))(a)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLEndTran) ( SQLSMALLINT HandleType,
|
||||
SQLHANDLE Handle,
|
||||
SQLSMALLINT CompletionType);
|
||||
|
||||
#define N3SQLEndTran(a,b,c) (*reinterpret_cast<T3SQLEndTran>(getOdbcFunction(ODBC3SQLFunctionId::EndTran)))(a,b,c)
|
||||
|
||||
virtual SQLRETURN FreeStmt(SQLHSTMT StatementHandle, SQLUSMALLINT Option) const = 0;
|
||||
virtual SQLRETURN CloseCursor(SQLHSTMT StatementHandle) const = 0;
|
||||
virtual SQLRETURN Cancel(SQLHSTMT StatementHandle) const = 0;
|
||||
virtual SQLRETURN EndTran(SQLSMALLINT HandleType,
|
||||
SQLHANDLE Handle,
|
||||
SQLSMALLINT CompletionType) const = 0;
|
||||
// Terminating a connection
|
||||
typedef SQLRETURN (SQL_API *T3SQLDisconnect) (SQLHDBC ConnectionHandle);
|
||||
|
||||
#define N3SQLDisconnect(a) (*reinterpret_cast<T3SQLDisconnect>(getOdbcFunction(ODBC3SQLFunctionId::Disconnect)))(a)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLFreeHandle) (SQLSMALLINT HandleType,
|
||||
SQLHANDLE Handle);
|
||||
|
||||
#define N3SQLFreeHandle(a,b) (*reinterpret_cast<T3SQLFreeHandle>(getOdbcFunction(ODBC3SQLFunctionId::FreeHandle)))(a,b)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLGetCursorName) ( SQLHSTMT StatementHandle,
|
||||
SQLCHAR * CursorName,
|
||||
SQLSMALLINT BufferLength,
|
||||
SQLSMALLINT* NameLength2);
|
||||
|
||||
#define N3SQLGetCursorName(a,b,c,d) (*reinterpret_cast<T3SQLGetCursorName>(getOdbcFunction(ODBC3SQLFunctionId::GetCursorName)))(a,b,c,d)
|
||||
|
||||
typedef SQLRETURN (SQL_API *T3SQLNativeSql) ( SQLHDBC ConnectionHandle,
|
||||
SQLCHAR * InStatementText,
|
||||
SQLINTEGER TextLength1,
|
||||
SQLCHAR * OutStatementText,
|
||||
SQLINTEGER BufferLength,
|
||||
SQLINTEGER * TextLength2Ptr);
|
||||
|
||||
#define N3SQLNativeSql(a,b,c,d,e,f) (*reinterpret_cast<T3SQLNativeSql>(getOdbcFunction(ODBC3SQLFunctionId::NativeSql)))(a,b,c,d,e,f)
|
||||
|
||||
// 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;
|
||||
virtual SQLRETURN Disconnect(SQLHDBC ConnectionHandle) const = 0;
|
||||
virtual SQLRETURN FreeHandle(SQLSMALLINT HandleType, SQLHANDLE Handle) const = 0;
|
||||
virtual SQLRETURN GetCursorName(SQLHSTMT StatementHandle,
|
||||
SQLCHAR* CursorName,
|
||||
SQLSMALLINT BufferLength,
|
||||
SQLSMALLINT* NameLength2) const = 0;
|
||||
virtual SQLRETURN NativeSql(SQLHDBC ConnectionHandle,
|
||||
SQLCHAR* InStatementText,
|
||||
SQLINTEGER TextLength1,
|
||||
SQLCHAR* OutStatementText,
|
||||
SQLINTEGER BufferLength,
|
||||
SQLINTEGER* TextLength2Ptr) const = 0;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -231,10 +231,7 @@ namespace connectivity::odbc
|
|||
|
||||
void construct();
|
||||
|
||||
oslGenericFunction getOdbcFunction(ODBC3SQLFunctionId _nIndex) const
|
||||
{
|
||||
return m_pStatement->getOdbcFunction(_nIndex);
|
||||
}
|
||||
const Functions& functions() const { return m_pStatement->functions(); }
|
||||
|
||||
css::uno::Reference< css::uno::XInterface > operator *()
|
||||
{
|
||||
|
|
|
@ -83,10 +83,7 @@ namespace connectivity::odbc
|
|||
,const css::uno::Reference< css::uno::XInterface >& _xInterface
|
||||
,sal_Int32 column);
|
||||
|
||||
oslGenericFunction getOdbcFunction(ODBC3SQLFunctionId _nIndex) const
|
||||
{
|
||||
return m_pConnection->getOdbcFunction(_nIndex);
|
||||
}
|
||||
const Functions& functions() const { return m_pConnection->functions(); }
|
||||
|
||||
virtual sal_Int32 SAL_CALL getColumnCount( ) override;
|
||||
virtual sal_Bool SAL_CALL isAutoIncrement( sal_Int32 column ) override;
|
||||
|
|
|
@ -158,10 +158,7 @@ namespace connectivity::odbc
|
|||
OStatement_Base(OConnection* _pConnection );
|
||||
using OStatement_BASE::operator css::uno::Reference< css::uno::XInterface >;
|
||||
|
||||
oslGenericFunction getOdbcFunction(ODBC3SQLFunctionId _nIndex) const
|
||||
{
|
||||
return m_pConnection->getOdbcFunction(_nIndex);
|
||||
}
|
||||
const Functions& functions() const { return m_pConnection->functions(); }
|
||||
// OComponentHelper
|
||||
virtual void SAL_CALL disposing() override;
|
||||
// XInterface
|
||||
|
|
|
@ -31,60 +31,58 @@
|
|||
|
||||
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,
|
||||
FIRST,
|
||||
AllocHandle,
|
||||
DriverConnect,
|
||||
GetInfo,
|
||||
GetFunctions,
|
||||
GetTypeInfo,
|
||||
SetConnectAttr,
|
||||
GetConnectAttr,
|
||||
SetEnvAttr,
|
||||
GetEnvAttr,
|
||||
SetStmtAttr,
|
||||
GetStmtAttr,
|
||||
Prepare,
|
||||
BindParameter,
|
||||
SetCursorName,
|
||||
Execute,
|
||||
ExecDirect,
|
||||
DescribeParam,
|
||||
NumParams,
|
||||
ParamData,
|
||||
PutData,
|
||||
RowCount,
|
||||
NumResultCols,
|
||||
ColAttribute,
|
||||
BindCol,
|
||||
Fetch,
|
||||
FetchScroll,
|
||||
GetData,
|
||||
SetPos,
|
||||
BulkOperations,
|
||||
MoreResults,
|
||||
GetDiagRec,
|
||||
ColumnPrivileges,
|
||||
Columns,
|
||||
ForeignKeys,
|
||||
PrimaryKeys,
|
||||
ProcedureColumns,
|
||||
Procedures,
|
||||
SpecialColumns,
|
||||
Statistics,
|
||||
TablePrivileges,
|
||||
Tables,
|
||||
FreeStmt,
|
||||
CloseCursor,
|
||||
Cancel,
|
||||
EndTran,
|
||||
Disconnect,
|
||||
FreeHandle,
|
||||
GetCursorName,
|
||||
NativeSql,
|
||||
|
||||
LAST
|
||||
};
|
||||
|
||||
namespace connectivity::odbc
|
||||
|
|
|
@ -24,10 +24,6 @@
|
|||
|
||||
// just to go with calling convention of windows
|
||||
#if SYSTEM_ODBC_HEADERS
|
||||
#if !defined WIN32_LEAN_AND_MEAN
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
#endif
|
||||
#include <windows.h>
|
||||
#define SQL_API __stdcall
|
||||
#include <sqlext.h>
|
||||
#else
|
||||
|
|
Loading…
Reference in a new issue