我想知道多值列有多少个值。 MSDN说:“ JET_RETRIEVECOLUMN中的itagSequence可以为0。如果itagSequence为0,则返回多值列的实例数,而不是任何列数据。” (当我们使用JetRetrieveColumns函数时)但是要返回的值的数据类型是什么?

JET_RETRIEVECOLUMN j_rc;
j_rc.columnid = j_cb.columnid; // j_cb is of type JET_COLUMNBASE
j_rc.grbit = NULL;
j_rc.pvData = // pointer to buffer for storing data
j_rc.cbData = // size of data


检查列是否为多值

if (j_cb.grbit & JET_bitColumnMultiValued) {


检索多值列中的值数量


        j_rc.itagSequence = 0;
        JetRetrieveColumns(sessionID, tbl_cursor, &j_rc, 1);
        ...
}


那么要返回的数据是什么类型?

最佳答案

关于JetRetrieveColumns的MSDN:
“成功后,将在JET_RETRIEVECOLUMN结构的数组中描述的提供的缓冲区中返回列数据和列大小。如果itagSequence设置为0(零)以指示需要一个多值字段的实例数而不是列数据,然后在itagSequence字段本身中返回多值列的实例数每个JET_RETRIEVECOLUMN结构都有一个错误字段,其中包含针对所检索列的警告。如果该列的值为NULL,则错误代码将设置为JET_wrnColumnNull。”
顺便说一句,itagSequence的类型为unsigned long。
感谢Paul Ogilvie为我指出的答案:)

关于c - 当itagSequence = 0在多值列上时,哪种类型的值返回JetRetrieveColumns?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57096979/

10-09 03:41