< Précédent | Suivant >

Ensembles de résultats

Parcourez l'ensemble de résultats (ResultSet) renvoyés par une requête pour récupérer les données de chaque enregistrement inclus.

Appliquez les étapes suivantes pour utiliser un objet ResultSet :

  1. Créez l'objet ResultSet. Pour créer un objet ResultSet, utilisez la méthode BuildResultSet ou BuildSQLQuery de l'objet Session. Ces deux méthodes renvoient un objet ResultSet qui est prêt à exécuter la requête mais qui ne contient aucune donnée.
  2. Exécutez la requête permettant d'alimenter en données l'objet ResultSet. Pour exécuter la requête, appelez la méthode Execute ou ExecuteAndCountRecords de l'objet ResultSet. Ces méthodes permettent de remplir l'objet ResultSet avec des données de la base de données.
  3. Parcourez les résultats pour identifier l'enregistrement recherché. Pour accéder au premier enregistrement de l'ensemble de résultats, appelez la méthode MoveNext qui initialise le curseur et le déplace sur le premier enregistrement. Vous pouvez alors utiliser les méthodes de l'objet ResultSet pour obtenir des informations sur les zones du premier enregistrement. Pour accéder aux enregistrements suivants, utilisez à nouveau la méthode MoveNext. Vous pouvez alors utiliser les méthodes de l'objet ResultSet pour obtenir des informations sur les zones de l'enregistrement en cours.
  4. Extrayez les valeurs des zones de l'enregistrement. Utilisez les méthodes de l'objet ResultSet pour obtenir des informations sur les zones de l'enregistrement.

Exemple

L'exemple de code suivant illustre comment utiliser les méthodes de l'objet ResultSet pour parcourir les données renvoyées par votre requête :

use CQPerlExt; 
#Start a Rational ClearQuest session 
$SessionObj = CQSession::Build(); 
$dbsetname = "CQMS.SAMPL.HOME"; 

#Refresh list of accessible databases 
$databases = $SessionObj->GetAccessibleDatabases("MASTR", "", $dbsetname); 

#Log into a database 
$SessionObj->UserLogon("admin","","SAMPL",$dbsetname); 

#Create a Query by calling the BuildQuery(record_type) method, You specify a record type as the argument
$querydef = $SessionObj->BuildQuery("defect"); 
#  You use the BuildField (field_name) method for each field value that you want included for each record 
#  returned in the result set for the query:
$querydef->BuildField("id"); 
$querydef->BuildField("headline"); 
$querydef->BuildField("owner.login_name"); 
$querydef->BuildField("submit_date"); 

# The BuildResultSet(query_def_name) you build will contain the records returned by the query: 
$resultset = $SessionObj->BuildResultSet($querydef); 

# The following command runs the query and counts the number of records in the result set.
$ct = $resultset->ExecuteAndCountRecords(); 

for ($i = 0; $i < $ct; $i++) { 
#  You use the MoveNext method to iterate through the records in the ResultSet:
$resultset->MoveNext(); 
# You can also loop through ResultSet without using the count, like this:
# while ( $resultset->MoveNext == $CQPerlExt::CQ_SUCCESS ) {

#  You use the GetColumnValue(column_number) method to get the field values that you specified to be returned 
# for each record (by calling the BuildField method for each field to include):
   print $resultset->GetColumnValue(1); 
   print " "; 
   print $resultset->GetColumnValue(2); 
   print " "; 
   print $resultset->GetColumnValue(3); 
   print " "; 
   print $resultset->GetColumnValue(4); 
   print "\n"; 
   } 

# There are also methods to discover column properties such as these methods: 
# ResultSet:GetNumberOfColumns 
# ResultSet:GetColumnType (all values are returned as strings, but you may wish to format them) 
#ResultSet:GetColumnLabel

CQSession::Unbuild($SessionObj); 
Les requêtes les plus utiles incluent les filtres que vous avez définis pour récupérer des enregistrements spécifiques correspondant à certains critères. La leçon suivante décrit comment définir des critères de recherche.
< Précédent | Suivant >

Commentaire