ACILogon2()¶
-
ACILogon2()¶
作用:
此会话可以是具有新的基础连接的新会话,也可以是通过现有连接池中的虚拟连接启动的会话,也可以是现有会话池中的虚拟会话。 调用函数的方式决定了它的行为。
语法:
sword ACILogon2 ( ACIEnv *envhp,
ACIError *errhp,
ACISvcCtx **svchp,
const OraText *username,
ub4 uname_len,
const OraText *password,
ub4 passwd_len,
const OraText *dbname,
ub4 dbname_len );
ub4 mode );
参数:
- envhp (IN)
ACI环境句柄,如果使用连接池,该环境句柄必须是对应连接池所在的句柄。
- errhp (IN/OUT)
错误句柄,该接口调用失败时,错误信息会存在该句柄,调用 ACIErrorGet 获得错误信息。
- svchp (IN/OUT)
服务器上下文句柄。默认模式下,如果指定的上下文句柄非空,那么在登录以后,会自动设置相关的连接句柄到该句柄上。如果指定的上下文句柄为空,那么ACI会自动分配一个上下文句柄输出,这个上下文句柄不需要通过调用 ACIHandleFree 来释放;当应用调用 ACILogoff 以后,ACI会自动释放这个句柄。
连接池模式下,一个新的会话句柄将会被分配,并且会从连接池中获取一个可用的连接,开启会话。
不能修改上下文句柄中的server和session句柄的任何属性, ACIAttrSet 将会报错,只有上下文的ACI_ATTR_STMTCACHESIZE属性可以被修改。
- username (IN)
登录的用户名. 必须是 ACIEnvNlsCreate 调用指定的charset 参数字符集的字符串。
- uname_len (IN)
登录的用户名长度。Username的字节长度,不是字符长度。
- password (IN)
登录的密码,必须是 ACIEnvNlsCreate 调用指定的charset 参数字符集的字符串.如果是连接池模式,且password为NULL,则会用连接池中的用户进行登录。
- passwd_len (IN)
登录的密码长度。password的字节长度,不是字符长度。
- dbname (IN)
默认情况下为登录的TNS服务名/连接字符串,如果是在连接池模式下,这个参数是连接池的名称。参数字符集必须是 ACIEnvNlsCreate 调用指定的charset 参数字符集的字符串。
- dbname_len (IN)
dbname参数的字节长度,不是字符长度。
- mode (IN)
有以下几种mode参数:
- ACI_DEFAULT
等同于调用ACILogon,可以与ACI_LOGON2_STMTCACHE同时使用,比如ACI_DEFAULT | ACI_LOGON2_STMTCACHE
- ACI_LOGON2_CPOOL/ACI_CPOOL
使用连接池,可以与ACI_LOGON2_STMTCACHE同时使用,比如ACI_LOGON2_CPOOL | ACI_LOGON2_STMTCACHE
- ACI_LOGON2_SPOOL
从会话池获得连接,可以与ACI_LOGON2_STMTCACHE同时使用,比如ACI_LOGON2_SPOOL | ACI_LOGON2_STMTCACHE
- ACI_LOGON2_STMTCACHE
使用语句句柄缓存, ACI_LOGON2_STMTCACHE
说明:
此调用可以从连接池和会话池中获取连接,请注意传入的池和类型是一致的。