ACIServerAttach()

ACIServerAttach()

作用:

为ACI操作创建数据源的访问路径,其实就是创建一个网络连接。本调用在神通数据库中不会创建真实的网络连接,仅仅是将连接字符串传入,做字符串合规性检查。

语法:

sword ACIServerAttach ( ACIServer     *srvhp,
                        ACIError      *errhp,
                        const OraText *dblink,
                        sb4            dblink_len,
                        ub4            mode );

参数:

  • srvhp (IN/OUT)

一个未初始化的服务句柄,这个调用会将其初始化,如果传入一个已经初始化的服务句柄,将会报错。

  • errhp (IN/OUT)

错误句柄,该接口调用失败时,错误信息会存在该句柄上,调用 ACIErrorGet 获得错误信息。

  • dblink (IN)

默认模式要关联的数据库服务名。该TNS服务名需要在ACI的配置文件中配置。 连接池模式下,为接口 ACIConnectionPoolCreate 返回的连接池名。

如果NULL,则连接本地数据库:相当于连接:localhost:2003/osrdb

如果 mode=ACI_CPOOL,则这里传入的是用 ACIConnectionPoolCreate 创建的连接池的名称poolName,参数字符编码必须是 ACIEnvNlsCreate 调用指定的charset 参数字符集的字符串。

  • dblink_len (IN)

dblink参数的字节长度,只能是非0值。

  • mode (IN)

有以下mode可设置:

  • ACI_DEFAULT

对于编码,该值告诉服务器句柄使用环境句柄中的设置。

  • ACI_CPOOL

使用连接池.

因为可以为任何连接会话句柄设置附加的服务器句柄,所以这里的mode值不影响任何会话句柄.

说明:

此调用用于在ACI应用程序和特定服务器之间创建关联。

此调用假定在连接池生效时调用了 ACIConnectionPoolCreate ,并给出了poolName。

此调用初始化服务器上下文句柄,该句柄必须在调用 ACIHandleAlloc 之前分配。此调用初始化的服务器上下文句柄可以通过调用 ACIAttrSet 与服务上下文相关联。在建立关联之后,可以对服务器执行操作。

如果应用程序针对多个服务器运行,则可以维护多个服务器上下文句柄。ACI操作针对当前与服务上下文关联的服务器上下文执行。

ACIServerAttach 成功完成后,应调用 ACISessionEndACIServerDetach 来清理。否则,会导致连接泄漏,并导致Linux或UNIX系统耗尽进程。