Extensions Image, Audio et Vidéo Administration et programmation

Modèle de programme créant un catalogue QBIC

La La figure ci-après figure présente un extrait d'un programme codé en langage C qui crée un catalogue QBIC. Ce programme catalogue également une colonne d'images dans ce catalogue. Vous trouverez le programme complet dans le fichier QBCATDMO.C du sous-répertoire SAMPLES. Avant d'exécuter le programme complet, vous devez exécuter les modèles de programmes ENABLE et POPULATE (qui se trouvent également dans le sous-répertoire SAMPLES). Pour plus d'informations sur les modèles de programmes, reportez-vous à l'Annexe B, Modèles de programmes et fichiers de support.

La structure de cet extrait est la suivante :

(1)Inclusion du fichier en-tête dmbqbapi.

(2)Connexion à la base de données.

(3)Création du catalogue. Il est créé lorsque la fonction de catalogage automatique est désactivée.

(4)Ouverture du catalogue en mise à jour.

(5)Ajout de la caractéristique couleur moyenne au catalogue.

(6)Catalogage d'une colonne d'images.

(7)Fermeture du catalogue.

Figure 20. Modèle de programme créant un catalogue QBIC

#include <sql.h>
#include <sqlcli.h>
#include <sqlcli1.h>
#include <dmbqbqpi.h> (1)
#include <stdio.h>
 
/****************************************************************************/
/*  Définition des prototypes de fonctions */
/****************************************************************************/
 
void printError(SQLHSTMT hstmt);
void createCatalog();
void openCatalog();
void closeCatalog();
void addFeature();
void catalogImageColumn();
 
QbCatalogHandle cHdl = 0;
 
static SQLHENV henv;
static SQLHDBC hdbc;
static SQLHSTMT hstmt;
static SQLRETURN rc;
char tableName[] = "sobay_catalog";
char columnName[] = "covers";
 
SQLCHAR uid[18+1];
SQLCHAR pwd[30+1];
SQLCHAR dbnName[SQL_MAX_DSN_LENGTH+1];
 
void main ()
{
/*---- invite à entrer le nom de la base de données, ----*/
       /*---- l'ID utilisateur et le mot de passe           ----*/
  printf("Enter database name:\n");
  gets((char *) dbName);
  printf("Enter userid:\n");
  gets((char *) pwd);
/* définition de l'environnement CLI SQL */
 SQlAllocEnv(&henv);
 SQLAllocConnect(henv, &hdbc);
 rc = SQLConnect(hdbc,dbname,SQL_NTS,uid,SQL_NTS,pwd,SQL_NTS); (2)
 if (rc != SQL_SUCCESS)
 {
  printError(SQL_NULL_HSTMT);
          exit(1);
 }
 createCatalog();
openCatalog();
addFeature();
getCatalogInfo();
 listFeatures();
 catalogImageColumn();
 closeCatalog();
 
 SQLDisconnect(hdbc);
 SQLFreeConnect(hdbc);
 SQLFreeEnv(henv);
}
/**********************************************************************/
void createCatalog()
{
 SQLINTEGER autoCatalog = 0;
 SQLINTEGER retLen;
   SQLINTEGER errCode = 0;
   char errMsg[500];
 
   QbCreateCatalog( (3)
         (char *) tableName,
         (char *) columnName,
         autoCatalog,
0
        );
 
     DBiGetError(&errCode, errMsg);
     if(errCode) printf("Code d'erreur %d Message d'erreur %s", errCode, errMsg);
}
/**********************************************************************/
void openCatalog()
{
   SQLINTEGER errCode = 0;
   char errMsg[500];
 SQLINTEGER mode = qbiUpdate;
 
   QbOpenCatalog( (4)
         (char *) tableName,
         (char *) columnName,
         mode,
         &cHdl
        );
 
     DBiGetError(&errCode, errMsg);
     if(errCode) printf("Code d'erreur %d Message d'erreur %s", errCode, errMsg);
}
 
/**********************************************************************/
void addFeature()
{
 SQLINTEGER errCode=0;
 char errMsg[5
 if(cHdl) /* si un catalogue est ouvert, "else" n'a aucun effet */
 {
   char featureName*lbrk.] = "QbColorFeatureClass"; (5)
     QbaddFeature(
         cHdl,
         featureName
        );
 
     DBiGetError(&errCode, errMsg);
     if(errCode) printf("Code d'erreur %d Message d'erreur %s", errCode, errMsg);
 }
   else
 {
          exit(1);
 }
}
/**********************************************************************/
void catalogImageColumn()
{
   SQLINTEGER errCode = 0;
   char errMsg[500];
 
 if(cHdl) /* si un catalogue est ouvert, "else" n'a aucun effet */
 {
  SQLRETURN rc;
    QbCatalogColumn( (6)
         cHdl,
        );
 
     DBiGetError(&errCode, errMsg);
     if(errCode) printf("Code d'erreur %d Message d'erreur %s", errCode, errMsg);
 
   else
 {
          exit(1);
 }
}
/**********************************************************************/
void closeCatalog()
{
 if(cHdl) /* si un catalogue est ouvert, "else" n'a aucun effet */
 {
    QbCloseCatalog( (7)
         cHdl,
        );
 }
}
/**********************************************************************/


[ Début de page | Page précédente | Page suivante | Table des matières | Index ]