如何检查OLE DB驱动程序是否支持通过IOpenRowset打开索引

我正在研究OLE DB(it was undeprecated on 2017),并尝试创建IrowsetIndex。 这是代码推断:

IDBProperties *pIDBProperties = nullptr;
HRESULT hr = S_OK;
hr = CoCreateInstance(CLSID_MSOLEDBSQL,NULL,CLSCTX_INPROC_SERVER,IID_IDBInitialize,(void **)&pIDBInitialize);
if (FAILED(hr)) {...}
/* omitted connection part */

IDBCreateSession* pIDBCreateSession = nullptr;
hr = pIDBInitialize->QueryInterface<IDBCreateSession>(&pIDBCreateSession);
if (FAILED(hr)) {...}
hr = pIDBCreateSession->CreateSession(0,IID_IOpenrowset,(iunknown**)&pOpenrowset);
DBID articoliID = { DB_NULLGUID,DBKIND_NAME,const_cast<LPOLESTR>(OLESTR("ARTICOLI1")) }; //table name
DBID indexID = { DB_NULLGUID,const_cast<LPOLESTR>(OLESTR("ARTICOLI1_IARTART")) }; //index name
if (FAILED(hr)) {...}
Irowset *&prowset
hr = pOpenrowset->Openrowset(0,&articoliID,IID_Irowset,(iunknown**)&prowset);
//it works
if (FAILED(hr)) {...}
IrowsetIndex *pIndexrowset;
hr = pOpenrowset->Openrowset(0,&indexID,IID_IrowsetIndex,(iunknown**)&prowset); 
//fails DB_E_NOINDEX

documentation起,我看到当“提供程序不支持通过IOpenrowset打开索引”时,DB_E_NOINDEX可能发生。

如何检查它们是否受支持?为了确保错误不在其他地方... 谢谢,

windger2008 回答:如何检查OLE DB驱动程序是否支持通过IOpenRowset打开索引

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3109306.html

大家都在问