2012-04-30 216 views
0

我写一个Java应用程序中,我连接到DB2数据库,并获得连接后,我使用下面的代码设置该连接的客户端信息:SQL连接ClientInfo客户端

String clientprogname = "MY PROGRAM"; //Progname 
String clientname = "user1"; // The name of the End-User 

con.setClientInfo("ApplicationName", clientprogname); 
con.setClientInfo("ClientUser", clientname); 

con.prepareStatement("SELECT * FROM SYSIBM.SYSDUMMY1 WHERE 0 = 1").executeQuery(); 
// Execute SQL to force extended client information to be sent to the server 

LogFile.log("ApplicationName: " + con.getClientInfo("ApplicationName")); 
LogFile.log("ClientUser: " + con.getClientInfo("ClientUser")); 

我意识到我可以使用con.getClientInfo获取客户端信息,但客户端信息是否存储在数据库中?根据Java Documentation,客户端信息存储在数据库中的适当位置(例如,在特殊的寄存器,会话参数或系统表列中)。是否有SQL语句可以执行以查看所有打开的连接的列表?

回答

1

根据this你可以从特殊寄存器中得到它,这里是一个较旧的topic引用相同的东西。

编辑:

这也是一个很好的链接,其中列出了一些有用的报表dbForums

+0

在DB2 9.7上:从SYSIBMADM.APPLICATIONS中选择substr(APPL_NAME,1,30) – Mike

1

支持getClientInfo和数据存储位置是数据库相关的。您需要检查驱动程序和数据库文档,以了解如何为您的数据库/驱动程序处理它。

+0

我连接到使用IBM DB2 Type 4驱动程序的DB2数据库(DB2 v9.7.400.501)的( db2jcc4.jar)。我试图在DB2文档中搜索,但没有运气:/ – user1135357