Windows搜索C++(MFC)OLE DB或ADO组搜索
我必须运行如下组查询: 在System.ItemName上分组,然后从SystemIndex中选择前20名System.ItemName 但是当我使用C++ ADO记录集运行时,当我从Stand索引查询中选择Stop 20系统。 所以如何执行这样的组搜索 ADO代码:Windows搜索C++(MFC)OLE DB或ADO组搜索,mfc,oledb,ado,windows-search,Mfc,Oledb,Ado,Windows Search,我必须运行如下组查询: 在System.ItemName上分组,然后从SystemIndex中选择前20名System.ItemName 但是当我使用C++ ADO记录集运行时,当我从Stand索引查询中选择Stop 20系统。 所以如何执行这样的组搜索 ADO代码: _ConnectionPtr connection = NULL; hr = connection.CreateInstance(__uuidof(Connection)); _RecordsetPtr recordset
_ConnectionPtr connection = NULL;
hr = connection.CreateInstance(__uuidof(Connection));
_RecordsetPtr recordset = NULL;
hr = recordset.CreateInstance(__uuidof(Recordset));
hr = recordset->Open("GROUP ON System.Kind AGGREGATE COUNT() as 'Total' OVER ( SELECT TOP 20 System.ItemName, System.ItemUrl FROM SystemIndex )",
connection.GetInterfacePtr(), adOpenForwardOnly, adLockReadOnly, adCmdText);
经过长时间的尝试,我决定直接运行OLEDB,但检索搜索数据似乎很困难
OLE DB代码:
CDATA来源CDATA来源;
hr=CDATA源代码。OpenFromInitializationStringconnectionstring
if (SUCCEEDED(hr))
{
CSession cSession;
if (SUCCEEDED(hr))
{
CCommand<CDynamicAccessor, CRowset> cCommand;
hr = cCommand.Open(cSession, L"GROUP ON System.ItemName OVER ( SELECT TOP 20 System.ItemName, System.Itemurl FROM SystemIndex )");
if (SUCCEEDED(hr))
{
for (hr = cCommand.MoveFirst(); S_OK == hr; hr = cCommand.MoveNext())
{
DBORDINAL columns= cCommand.GetColumnCount();
for (DBORDINAL i = 1; i <= columns; i++)
{
PCWSTR pszName = cCommand.GetColumnName(i);
//HOW TO GET DATA TO A sdt::string ?
}
}
cCommand.Close();
}
}
}