IBM Books

Image Extender、Audio Extender 和 Video Extender 管理和程序设计

示例

在下列示例中,使用缺省表空间来启用数据库,以存放图象数据。

使用 API:下图中的代码在启用现存数据 库之前,先连接它。此示例是使用 DB2 调用层接口编写的。它包括一些设置和差错检验代码。完整的样本程序在 SAMPLES 子目录中的 ENABLE.C 文件中。

图 10. 启用数据库的样本代码

 
/*---- Set-up -------------------------------------------------*/
#include <stdio.h>
#include <stlib.h>
#include <string.h>
#include "dmbimage.h"       /* image Extender function prototypes (DBi) */
#include "utility.h"        /* utility functions */
 
#define MMDB_ERROR_MSG_TEXT_LEN         1000
#define SERVER_IS_DB2390  (strcmp(dbms, "DB2")==0 || strcmp(dmbs, "DSN06010")==0)
 
int
main(int argc, char *argv[])
{
        SQLHENV henv = SQL_NULL_HENV;
        SQLHDBC hdbc = SQL_NULL_HDBC;
        SQLHSTMT hstmt = SQL_NULL_HSTMT;
SQLCHAR uid[18+1];
SQLCHAR pwd[30+1];
        SQLCHAR dbname[SQL_MAX_DSN_LENGTH+1];
        SQLCHAR buffer[500];
        SQL SMALLINT dbms_sz = 0;
        char    dbms[20];
 
        SQLRETURN rc = SQL_SUCCESS;
        SQLINTEGER sqlcode = 0;
        char errorMsgText[MMDB_ERROR_MSG_TEXT_LEN+1];
        char *program = "enable;
        char *step;
         
 
/*---- Prompt for database name, userid, and password ----*/
        if (argc > 5) ||  (argc >=2 && strcmp(argv[1],"?")== 0))
          {
            printf("Syntax for enable - enabling a DB2 UDB database: \n"
                   "   enable database_name userid password\n");
 exit (0);
          }
 
        if (argc == 4) {
          strcpy((char *)dbname, argv[1]);
          strcpy((char *)uid   , argv[2]);
          strcpy((char *)pwd   , argv[3]);
          }
else {
          printf("Enter database name:\n");
  gets((char *) dbName);
          printf("Enter userid:\n");
  gets((char *) uid); 
          printf("Enter password:\n");
  gets((char *) pwd);
          }
/*----- connect to the database -----------------------------------------------*/
         rc = cliInitialize(&henv, &hdbc, dbname, uid, pwd);
cliCheckError(henv, hdbc, SQL_NULL_HSTMT, rc);
         if (rc < 0) goto SERROR;
 
/*----- find out if application is connected to DB2/UDB or DB2/390?------------*/
         rc = SQLGetInfo(hdbc, SQL_DBMS_NAME, (SQLPOINTER) &dbms,
                         sizeof(dbms), &dbms_sz);
cliCheckError(henv, hdbc, SQL_NULL_HSTMT, rc); 
         if (rc < 0) goto SERROR;
  
/****** enable server for image extender ****************************************/
     if (!SERVER_IS_DB2390)
           {
            printf("%s: Enabling database......\n", program);
           }
         printf("%s: This may take a few minutes, please wait......\n", program);
 
     if (!SERVER_IS_DB2390)
           {
            step="DBiEnableDatabase with NULL tablespace"
            rc=DBiEnableDatabase(NULL);
           }
if (rc < 0) {
            printf("%s: %s failed!\n", program, step);
   printMsg(rc);
   DBiGetError(&sqlcode, errorMsgText);
           if (sqlcode)
              printf("sqlcode=%i, ",sqlcode);
} else if (rc > 0) {
           printf("%s: %s, warning detected.\n", program, step);
   printMsg(rc);
   DBiGetError(&sqlcode, errorMsgText);
            printf("warning MsgText=%s\n", errorMsgText);
} else
           printf("%s: %s OK\n", program, step);
/****** end of enable server *************************************************/
 

使用 db2ext 命令行:在此示例中, 已连接数据库。

启用 db2image 的数据库


[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 ]