DataSource 对象
GBase 8s JDBC Driver 扩展标准 DataSource 接口,以允许在 DataSource 对象中定义连接属性(标准属性和 GBase 8s 环境变量),而不是通过 URL。
下表描述 GBase 8s 连接属性如何对应于 DataSource 属性。
GBase 8s 连接属性 | DataSource 属性 | 数据类型 | 是否必需? | 描述 |
IFXHOST | 无; | String | 对于客户机侧JDBC,必需,除非定义SQLH_TYPE; 对于服务器侧JDBC, 不是必需的 | 运行 GBase 8s 数据库服务器的计算机的 IP 地址或主机名称 |
PORTNO | portNumber | int | 对于客户机侧JDBC,必需,除非定义SQLH_TYPE;对于服务器侧JDBC, 不是必需的 | GBase 8s 数据库服务器的端口号。该端口号罗列在 /etc/services 文件中。 |
DATABASE | databaseName | String | 不是必需的,除非连接来自运行在数据库服务器中的web 应用程序(诸如浏览器) | 您想要连接至其的 GBase 8s 数据库的名称如果未指定数据库的名称,则制作至GBase 8s 数据库服务器的连接。 |
GBASEDBTSERVER | serverName | String | 对于客户机侧JDBC,必需;对于服务器侧JDBC,忽略 | 您想要连接至其的 GBase 8s 数据库服务器的名称 |
USER | user | String | 必需 | 当连接至 GBase 8s 数据库或数据库服务器时,用户名称控制(或决定)会话权 限通常,必须同时指定用户名称和口令;然而,如果 DBMS 信任运行 JDBC 应用程序 的用户,则可能都省略。 |
PASSWORD | password | String | 必需 | 用户的口令通常,必须同时指定用户名称和口令;然而,如果 DBMS 信任运行 JDBC 应用程序 的用户,则可能都省略。 |
无 | description | String | 必需 | DataSource 对象的描述 |
无 | dataSourceName | String | 不是必需的 | 对于连接池或分布式事务,隐含的ConnectionPoolDataSource 或XADataSource 对象 的名称不受支持的连接属性GBase 8s JDBC Driver 不支持 networkProtocol 和 roleName 属性。 |
指定连接信息
如果 LDAP(轻型目录访问协议)服务器或 sqlhosts 文件通过 SQLH_TYPE 属性提供GBase 8s 数据库服务器的 IP 地址、主机名称或端口号或服务名称,则不必使用标准DataSource 属性来指定它们。
ConnectionPoolDataSource 对象
要获取关于 ConnectionPoolDataSource 对象的信息,请参阅连接池。
环境变量
要获取受支持的环境变量(属性)的列表,请参阅 随同 GBase 8s JDBC 驱动程序的 GBase 8s 环境变量。要获取 GBase 8s DataSource 扩展的列表,其允许您定义环境变量值和连接池调整参数,请参阅 DataSource 扩展。驱动程序不查询用户环境来确定环境变量值。
高可用性数据复制
可随同“高可用性数据复制”来使用 DataSource 对象。要获取更多信息,请参阅连接至高可用性集群的服务器。
示例:在示例程序中使用 DataSource 对象
下列来自 pickaseat 示例程序的代码定义并使用 DataSource 对象:
IfxConnectionPoolDataSource cpds = null;
try
{
Context initCtx = new InitialContext();
cpds = new IfxConnectionPoolDataSource();
cpds.setDescription("Pick-A-Seat Connection pool");
cpds.setIfxIFXHOST("158.58.60.88");
cpds.setPortNumber(179);
cpds.setUser("demo");
cpds.setPassword("demo");
cpds.setServerName("ipickdemo_tcp");
cpds.setDatabaseName("ipickaseat");
cpds.setIfxGL_DATE("%B %d, %Y");
initCtx.bind("jdbc/pooling/PickASeat", cpds);
}
catch (Exception e)
{
System.out.println("Problem with registering the CPDS");
System.out.println("Error: " + e.toString());
}
示例:使用带有 IFX_LOCK_MODE_WAIT 连接属性的 DataSource 对象
下列是使用 DataSource 对象的 IFX_LOCK_MODE_WAIT 连接属性的示例:
示例 1
IfxDataSource ds = new IfxDataSource ();
ds. setIfxIFX_LOCK_MODE_WAIT (65); // 等待 65 秒
…
int waitMode = ds.getIfxIFX_LOCK_MODE_WAIT ();
示例 2
An example Using DataSource:
IfxDataSource ds = new IfxDataSource ();
ds.setIfxIFX_ISOLATION_LEVEL ("0U"); // set isolation to dirty read with
retain
// update locks.
….
String isoLevel = ds.getIfxIFX_ISOLATION_LEVEL ();




