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, ); } } /**********************************************************************/ |