连接串行化

一次仅能有一个与 DB2 Everyplace 数据库的连接。在 Palm 之外的所有平台上,DB2 Everyplace 支持连接串行化。使用连接串行化,可以将数据源的连接请求串行起来。 每次只可以建立一个与给定数据源的活动连接。将其它连接请求放入到队列中。可以使用 SQLSetConnectAttr() 函数 SQL_ATTR_LOGIN_TIMEOUT 属性设置超时时间。典型的串行化方案包括:

例如,以下 CLI /JDBC 调用将把连接超时时间设置为 10。 即,如果存在与同一数据库的另一个连接,则应用程序将接收到错误。

对于 CLI:

 int i = 10; // 10 seconds timeout
rc = SQLSetConnectAttr(hdbc, SQL_ATTR_LOGIN_TIMEOUT, (SQLPOINTER) i, 0); 

对于 JDBC:

int waitTime = 10; 
String url = "jdbc:db2e:mysample"; 
Properties prop = new Properties(); 
prop.setProperty("LOGIN_TIMEOUT", Integer.toString(waitTime)); 
Connection con = driver.connect(url,prop); 
 

记录:

  1. 缺省超时时间是 0 秒。

  2. 多线程应用程序可以使用一个线程连接到数据库,而使用另一线程与数据库断开连接。

  3. 当应用程序成功地连接到数据库时,将创建名为“DSYLOCK”的文件。 如果应用程序进程异常终止,将自动除去文件 DSYLOCK。

  4. 限制:连接串行化可能对驻留在网络驱动器上的数据库不起作用。

  5. 在 JDBC 程序中,如果以属性的形式将超时值传送到 DriverManager.getConnection() 方法,将忽略超时值并将它设置为零。

相关任务