本文整理汇总了C++中CConnect::getEnvHandle方法的典型用法代码示例。如果您正苦于以下问题:C++ CConnect::getEnvHandle方法的具体用法?C++ CConnect::getEnvHandle怎么用?C++ CConnect::getEnvHandle使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CConnect
的用法示例。
在下文中一共展示了CConnect::getEnvHandle方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: FreeHandle
SQLRETURN ODBC::FreeHandle(SQLSMALLINT HandleType,
SQLHANDLE Handle)
{
CEnv* pEnv;
CConnect* pConnect;
CStmt* pStmt;
CDesc* pDesc;
switch (HandleType)
{
case SQL_HANDLE_ENV:
delete (CEnv *)Handle;
break;
case SQL_HANDLE_DBC:
pConnect = (CConnect *)Handle;
pEnv = pConnect->getEnvHandle();
if(TryEnterCriticalSection(&pEnv->m_CSObject))
{
if(pEnv->m_CSObject.RecursionCount > 1)
{
pConnect->setDiagRec(DRIVER_ERROR, IDS_HY_000, 0, "The handle is in use and cannot be freed.");
LeaveCriticalSection(&pEnv->m_CSObject);
return SQL_ERROR;
}
}
else
{
EnterCriticalSection(&pEnv->m_CSObject);
}
delete pConnect;
LeaveCriticalSection(&pEnv->m_CSObject);
break;
case SQL_HANDLE_STMT:
pStmt = (CStmt *)Handle;
pConnect = pStmt->getConnectHandle();
if(TryEnterCriticalSection(&pConnect->m_CSObject))
{
if(pConnect->m_CSObject.RecursionCount > 1)
{
pStmt->setDiagRec(DRIVER_ERROR, IDS_HY_000, 0, "The handle is in use and cannot be freed.");
LeaveCriticalSection(&pConnect->m_CSObject);
return SQL_ERROR;
}
}
else
{
EnterCriticalSection(&pConnect->m_CSObject);
}
delete pStmt;
LeaveCriticalSection(&pConnect->m_CSObject);
break;
case SQL_HANDLE_DESC:
pDesc = (CDesc *)Handle;
pConnect = pDesc->getDescConnect();
if(TryEnterCriticalSection(&pConnect->m_CSObject))
{
if(pConnect->m_CSObject.RecursionCount > 1)
{
pDesc->setDiagRec(DRIVER_ERROR, IDS_HY_000, 0, "The handle is in use and cannot be freed.");
LeaveCriticalSection(&pConnect->m_CSObject);
return SQL_ERROR;
}
}
else
{
EnterCriticalSection(&pConnect->m_CSObject);
}
delete pDesc;
LeaveCriticalSection(&pConnect->m_CSObject);
break;
default:
return SQL_INVALID_HANDLE;
}
return SQL_SUCCESS;
}