std::string conn_str = "192.168.10.2:21001/window"; 这个参数是传递给OCILogon2 db参数吗,如果不是,这个参数怎么传递
时间: 2024-02-22 18:56:38 浏览: 63
Webtest(jsp).rar_Java ODBC SQLSERVER_http/2-class.com/_jsp_试卷_选择
是的,这个参数可以作为OCILogon2函数的第一个参数,用于连接Oracle数据库。具体来说,参数"192.168.10.2:21001/window"表示连接到IP地址为192.168.10.2,端口号为21001的Oracle实例,使用服务名为"window"的数据库服务。在调用OCILogon2函数时,可以将该参数传递给第一个参数,如下所示:
```
OCIEnv* envhp;
OCIError* errhp;
OCISvcCtx* svchp;
OCIAuthInfo* authhp;
OCIConnection* connp;
int res = OCIEnvCreate(&envhp, OCI_DEFAULT, (void*)0, (void*(*)(void*,size_t))0,
(void*(*)(void*,void*,size_t))0, (void(*)(void*,void*))0,
(size_t)0, (void**)0);
if (res != OCI_SUCCESS) {
// 处理错误
}
res = OCIHandleAlloc((void*)envhp, (void**)&errhp, OCI_HTYPE_ERROR, (size_t)0, (void**)0);
if (res != OCI_SUCCESS) {
// 处理错误
}
res = OCILogon2(envhp, errhp, &svchp, &authhp,
(OraText*)conn_str.c_str(), conn_str.length(),
(OraText*)0, 0, OCI_DEFAULT);
if (res != OCI_SUCCESS) {
// 处理错误
}
res = OCIHandleAlloc((void*)envhp, (void**)&connp, OCI_HTYPE_CONNECTION, (size_t)0, (void**)0);
if (res != OCI_SUCCESS) {
// 处理错误
}
res = OCIAttrSet((void*)connp, OCI_HTYPE_CONNECTION, (void*)svchp, (ub4)0, OCI_ATTR_SERVER, errhp);
if (res != OCI_SUCCESS) {
// 处理错误
}
...
```
需要注意的是,这里使用的是C++的std::string类型,如果传递的是C风格的字符串,可以直接传递。此外,还需要对OCILogon2函数的返回值进行错误处理。
阅读全文