![](https://csdnimg.cn/release/download_crawler_static/87032321/bg6.jpg)
}
};
int main()
{
// 初始化 OCI 环境句柄指针 , 对应的句柄类型 OCI__HTYPE_ENV
OCIEnv *envhpp = NULL;
// 初始化服务器句柄 , 对应的句柄类型 OCI_HTYPE_SERVER
OCIServer *servhpp = NULL;
// 用于捕获 OCI 错误信息 , 对应的句柄类型 OCI_HTYPE_ERROR
OCIError *errhpp = NULL;
// 初始化用户连接句柄 , 对应的句柄类型 OCI_HTYPE_SESSION
OCISession *usrhpp = NULL;
// 初始化服务上下文句柄 , 对应的句柄类型 OCI_HTYPE_SVCCTX
OCISvcCtx *svchpp = NULL;
// 初始化句子句柄 ( 创建一个会话 ), 对应的句柄类型 OCI_HTYPE_STMT
OCIStmt *stmthpp = NULL;
string sid="orcl";
// 创建或初始化 OCI 环境 , 并设置环境句柄。
sword swResult = OCIEnvCreate(&envhpp, OCI_DEFAULT, NULL, NULL, NULL, NULL,
0, NULL);
if (swResult != OCI_SUCCESS && swResult != OCI_SUCCESS_WITH_INFO)
{
cout << "Oracle environment initialization error!" << endl;
exit(1);
}
cout << "Oracle environment initialization success!" << endl;
// 产生一个指定环境的错误句柄
OCIHandleAlloc((dvoid *)envhpp, (dvoid **)&errhpp, OCI_HTYPE_ERROR, (size_t)0,
(dvoid **)0);
// 产生一个指定环境的服务句柄
OCIHandleAlloc((dvoid *)envhpp, (dvoid **)&servhpp, OCI_HTYPE_SERVER, (size_t)0,
(dvoid **)0);
// 连接 | 断开服务器 多用户方式连接 ( 创建一个存取路径到数据源 )
if (OCIServerAttach(servhpp, errhpp, (text *)sid.c_str(), strlen(sid.c_str()), 0) !=
OCI_SUCCESS)
{
int errcno;
char errbuf[512]={'\0'};
sb4 errcode;
// 返回一个错误指针和一个 OCI 错误代码
OCIErrorGet((dvoid *)errhpp, (ub4)1, (text *)NULL, &errcode, (ub1 *)errbuf,
(ub4)sizeof(errbuf), OCI_HTYPE_ERROR);
errcno = errcode;
cout << "Oracle server attach error:" << errbuf << endl;