Image Extender 提供了三个 API 来查询表列中的已编目图象。这些 API 的区别仅在于:是要求将查询字符串作为输入,还是要求将查询对象作为输入:
API | 输入 |
---|---|
QbQueryStringSearch | 查询字符串 |
QbQuerySearch | 查询对象句柄 |
QbQueryNameSearch | 查询对象名 |
在所有这三个 API 中,还:
还要指向要包含搜索结果的输出结构的数组。作为响应,Image Extender 在这些结构中返回其特性值最类似于查询特性值的目标图象的句柄。它还返回每一图象的得分,该得分指示图象的特性值与查询有多类似。该结构是在 QBIC 的包含(首标)文件 dmbqbapi.h 中定义的,如下所示:
typedef struct{ char imageHandle[MMDB_BASE_HANDLE_LEN+1]; SQLDOUBLE SCORE } QbResult;
必须分配大小足以存放指定的最大结果数的数组,并在 API 中指向该数组。还必须指向计数器;Image Extender 将该计数器的值设置为它返回的结果数。
在下例中,使用 QbQueryStringSearch API, 以便按内容查询表列中已编目的图象。注意指向查询作用域的指针被设置为零值。
QbResult returns[MaxQueryReturns]; SQLINTEGER maxResults=qbiMaxQueryReturns; SQLINTEGER count; QbQueryHandle qHandle; QbResult results[qbiMaxQueryReturns]; rc=QbQueryStringSearch( "QbColorFeatureClass color=<255, 0, 0>" /*query string */ "employee", /* user table */ "picture", /* image column */ maxResults, /* maximum number of results */ 0, /* query scope pointer * / qbiArray, /* store results in an array */ &count, /* count of returned images */ results); /* array of returned results */
下面是使用 QbQuerySearch API 的请求。注意查询对象句柄被指定为输入。
QbResult returns[MaxQueryReturns]; SQLINTEGER maxResults=qbiMaxQueryReturns; SQLINTEGER count; QbQueryHandle qHandle; QbResult results[qbiMaxQueryReturns]; rc=QbQuerySearch( qHandle, / query object handle */ "employee", /* user table */ "picture", /* image column */ maxResults, /* maximum number of results */ 0, /* query scope pointer * / qbiArray, /* store results in an array */ &count, /* count of returned images */ results); /* array of returned results */