从我的程序中摘一段给你,那几个的区别没研究过,Demo里用的好像是OCIInitialize()。 OCIEnv* m_pEnvhp;
OCIError* m_pErrorhp;
OCISession* m_pUsrhp;
OCISvcCtx* m_pSvchp;
OCIStmt* m_pStmthp;int COracle::Open(char *pszUserName, char *pszPasswd, char *pszServerName, int nInitMode)
{
if (CONNECTED == m_bConnected)
{
return 0;
} sword retval;
// ³õʼ»¯»·¾³±äÁ¿
retval = OCIEnvCreate(&m_pEnvhp, nInitMode, (dvoid*)0, 0,0,0,0,0);
if (OCI_SUCCESS != retval)
{
CheckErr(retval, "OCIEnvCreate");
FreeHandle();
return retval;
} retval = OCIHandleAlloc(m_pEnvhp, (dvoid **)&m_pErrorhp, OCI_HTYPE_ERROR, 0, 0);
if (OCI_SUCCESS != retval)
{
CheckErr(retval, "OCIHandleAlloc");
FreeHandle();
return retval;
} retval = OCILogon(m_pEnvhp, m_pErrorhp, &m_pSvchp, 
(unsigned char*)pszUserName, strlen(pszUserName),
(unsigned char*)pszPasswd, strlen(pszPasswd),
(unsigned char*)pszServerName, strlen(pszServerName)); if (OCI_SUCCESS != retval)
{
CheckErr(retval, "OCILogon");
FreeHandle();
return retval;
}

m_bConnected = CONNECTED;

retval = OCIHandleAlloc(m_pEnvhp, (dvoid**)&m_pStmthp, OCI_HTYPE_STMT,
0, 0);
if (OCI_SUCCESS != retval)
{
CheckErr(retval, "OCIHandleAlloc");
Close();
return retval;
} return 0;
}