inline void CaUserDefault::Init(CaNode* pNode) { m_strVirtualNodeUser = _T(""); CaSessionManager& sessionMgr = theApp.GetSessionManager(); CaSession session; session.SetNode(pNode->GetName()); session.SetDatabase(_T("iidbdb")); session.SetIndependent(TRUE); session.SetDescription(sessionMgr.GetDescription()); CaSessionUsage UseSession (&sessionMgr, &session); m_strVirtualNodeUser = INGRESII_llDBMSInfo(_T("username")); // session_user? }
BOOL DML_QueryDatabase(CdSqlQuery* pDoc, CTypedPtrList< CObList, CaDBObject* >& listObj, int& nSessionVersion) { BOOL bOK = FALSE; CString strNode = pDoc->GetNode(); CString strConnectionString = pDoc->GetConnectInfo(); if (!strConnectionString.IsEmpty()) strNode = strConnectionString; CaLLQueryInfo queryInfo (OBT_DATABASE, strNode, _T("iidbdb")); queryInfo.SetFetchObjects (CaLLQueryInfo::FETCH_ALL); CString strDefault; CString strServer = pDoc->GetServer(); CString strUser = pDoc->GetUser(); strDefault.LoadString(IDS_DEFAULT_SERVER); if (strDefault.CompareNoCase(strServer) == 0) strServer = _T(""); strDefault.LoadString(IDS_DEFAULT_USER); if (strDefault.CompareNoCase(strUser) == 0) strUser = pDoc->GetDefaultConnectedUser(); queryInfo.SetServerClass(strServer); queryInfo.SetUser(strUser); SETLOCKMODE lockmode; memset (&lockmode, 0, sizeof(lockmode)); lockmode.nReadLock = LM_NOLOCK; CaSessionManager& sessionMgr = theApp.GetSessionManager(); CaSession session; session.SetFlag(queryInfo.GetFlag()); session.SetNode(queryInfo.GetNode()); session.SetDatabase(queryInfo.GetDatabase()); session.SetUser(queryInfo.GetUser()); session.SetServerClass(queryInfo.GetServerClass()); session.SetOptions(queryInfo.GetOptions()); session.SetDescription(sessionMgr.GetDescription()); CaSessionUsage useSession (&sessionMgr, &session); CaSession* pSession = useSession.GetCurrentSession(); if (pSession) { pSession->SetLockMode(&lockmode); nSessionVersion = pSession->GetVersion(); bOK = INGRESII_llQueryObject2 (&queryInfo, listObj, pSession); } return bOK; }