< 上一课 | 下一课 >

登录到用户数据库

创建 Session 后,您可以获取可访问数据库的列表,然后必须提供登录凭证以登录到用户数据库。
为防止未经授权的用户访问您的数据库,您必须先登录到数据库才能访问其记录。对于挂钩,这种用户认证将由 Rational ClearQuest 客户机应用程序自动处理。但是外部应用程序必须使用 Session 对象以编程方式登录。
要确定登录到哪个数据库,哪个数据库执行登录,请执行以下步骤:
  1. 通过调用 Session 对象的 GetAccessibleDatabases 方法来获取与模式存储库关联的数据库的列表。该方法返回 DatabaseDesc 对象的集合,每个对象包含有关单一用户数据库的信息。
  2. 使用 DatabaseDesc 对象的方法获取特定的数据库信息,例如某个数据库所属的数据库或数据库集(模式存储库及其关联的数据库)的名称。
  3. 通过调用 Session 对象的 UserLogon 方法登录到数据库。
UserLogon 方法采用四个自变量。
$CQsession->UserLogon(login_name, password, database_name, database_set_name); 
所有自变量均为字符串: 例如:
$CQSession->UserLogon("admin", "", "SAMPL", ""); 

在以下代码示例中,用户(admin)获取可访问的数据库并且登录到名为 perl2 的数据库:
require CQPerlExt; 
$CQsession = CQSession::Build();  

#Start a Rational ClearQuest session 
$sessionObj = CQSession::Build(); 

#Get a list of accessible databases 
$databases = $sessionObj->GetAccessibleDatabases("MASTR", "admin", ""); 
$count = $databases->Count(); 

$sessionObj->UserLogon("admin", "", "perl2", "");  

#For each accessible database, 
# get database name and login as joe with password gh36ak3: 
for($x=0;$x<$count;$x++)
   { 
     $db = $databases->Item($x); 
     $dbName = $db->GetDatabaseName(); 
     # Logon to the database 
     $sessionObj->UserLogon( "joe", "gh36ak3", $dbName, "" ); 
     #... 
   } 

# You can also ise the GetSessionDatabase method rather than the GetAccessibleDatabases method
$dbDesc = $sessionObj->GetSessionDatabase();  

# The GetSessionDatabase method returns information about the database that is being accessed 
# in the current session. This method differs from the GetAccessibleDatabases method in that it 
# returns the DatabaseDescription object associated with the current session. You can only call
# this method after the user has logged in to a particular database.


print "DB name = ", $dbDesc->GetDatabaseName(), "\n";  
print "DB set name = ", $dbDesc->GetDatabaseSetName(), "\n";  
print "DB connect string = ", $dbDesc->GetDatabaseConnectString(), "\n";  
print "User login name = ", $sessionObj->GetUserLoginName(), "\n";  
print "User full name = ", $sessionObj->GetUserFullName(), "\n";  
print "User email = ", $sessionObj->GetUserEmail(), "\n";  
print "User phone = ", $sessionObj->GetUserPhone(), "\n";  
print "Misc user info = ", $sessionObj->GetUserMiscInfo(), "\n";  
print "User groups: \n";  
$userGroups = $sessionObj->GetUserGroups();  
if (!@$userGroups) 
     {  # Code to handle if no user groups exist 
        print "This user does not belong to any groups\n"; 
     }  
else 
     {  # Print out all groups 
        foreach $groupname (@$userGroups) 
             { print "Group $groupname\n"; }
     }  
CQSession::Unbuild($sessionObj); 

课程检查点

既然您已了解如何使用 ClearQuest API 来获取会话并登录到数据库,那么可以开始学习如何执行实际的 ClearQuest 客户机用例,如运行和创建查询、图表和报告,以及查看、修改和创建记录。
< 上一课 | 下一课 >

反馈