如何检查 _variant_t 是否为 NULL

Li *_*Kui 3 c++ visual-c++

我正在通过 ADO 从 excel 单元格读取数据

while (!pRec->adoEOF)
{
    _variant_t a = pRec->Fields->GetItem(long(0))->Value;
    //todo
}
Run Code Online (Sandbox Code Playgroud)

如何检查是否a相等NULL

a.bstrVal==NULL
Run Code Online (Sandbox Code Playgroud)

它没有用。

Ben*_*Ben 5

我怀疑你想要:

a.vt == VT_NULL // Represents a NULL received from a database
Run Code Online (Sandbox Code Playgroud)

或者

a.vt == VT_EMPTY // Represents an uninitialized object
Run Code Online (Sandbox Code Playgroud)

数据库空值在VARIANT.

但是,如果它来自 Excel,您也有可能得到一个空字符串而不是 null。

a.vt == VT_BSTR && SysStringLen(a.bstrVal) == 0
Run Code Online (Sandbox Code Playgroud)