Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
GetRecordCount ruft die Anzahl von Zeilen im aktuellen Rowset ab.
Syntax
HRESULT IRowsetPosition::GetRecordCount(ULONG * pcRows,);
Parameter
- pcRows
[in/out] Ein Zeiger auf einen Wert vom Typ Long ohne Vorzeichen. Dieser Wert vom Typ Long muss vom Client zugeordnet werden.
Rückgabewert
- S_OK
Die Methode wurde erfolgreich abgeschlossen.
- E_INVALIDARG
pcRows war NULL.
- E_UNEXPECTED
Das Rowset ist in einem veralteten Status.
Hinweise
Dies ist die genaue Anzahl von Datensätzen im Rowset.
Im folgenden Beispiel wird veranschaulicht, wie Sie mit IRowsetPosition::GetRecordCount die Anzahl von Zeilen im Rowset zählen, das zurückgegeben wird, wenn "SELECT * FROM Prices" für eine SQL Server-Datenbank ausgeführt wird.
Beispiel
//Declarations
HRESULT hr = NOERROR;
DBPROPSET dbpropset[1];
DBPROP dbprop[1];
DBPROPSET rowsetpropset[1];
DBPROP rowsetprop[2];
ULONG cbRecordCount;
// Provider interfaces
IDBProperties * pIDBProperties = NULL;
IDBInitialize * pIDBInitialize = NULL;
IDBCreateSession * pIDBCreateSession = NULL;
IRowsetPosition * pIRowsetPos = NULL;
ICommandProperties * pICmdProps = NULL;
IDBCreateCommand * pIDBCrtCmd = NULL;
ICommandText * pICmdText = NULL;
IRowset * pIRowset = NULL;
// Initialize the environment.
hr = CoCreateInstance(CLSID_SQLSERVERCE_3_0, 0, CLSCTX_INPROC_SERVER,
IID_IDBInitialize, (void**) &pIDBInitialize);
if (FAILED(hr))
{
//Send an error-specific message and do error handling.
goto Exit;
}
// Initialize property structures
VariantInit(&dbprop[0].vValue);
// Initialize the property with the name of database.
dbprop[0].dwPropertyID = DBPROP_INIT_DATASOURCE;
dbprop[0].dwOptions = DBPROPOPTIONS_REQUIRED;
dbprop[0].vValue.vt = VT_BSTR;
dbprop[0].vValue.bstrVal = SysAllocString(L"\\Windows\\Aworks.sdf");
if(!(dbprop[0].vValue.bstrVal))
{
hr = E_OUTOFMEMORY;
goto Exit;
}
// Initialize the property set.
dbpropset[0].guidPropertySet = DBPROPSET_DBINIT;
dbpropset[0].rgProperties = dbprop;
dbpropset[0].cProperties = sizeof(dbprop)/sizeof(dbprop[0]);
// Set the properties into the provider's data source object.
pIDBInitialize->QueryInterface(IID_IDBProperties,(void**)&pIDBProperties);
hr = pIDBProperties->SetProperties(sizeof(dbpropset)/sizeof(dbpropset[0]),
dbpropset);
if(FAILED(hr))
{
goto Exit;
}
// Initialize the data source.
hr = pIDBInitialize->Initialize();
if(FAILED(hr))
{
goto Exit;
}
// Create the Session and Command objects.
hr = pIDBProperties->QueryInterface(IID_IDBCreateSession, (void **)
&pIDBCreateSession);
if (FAILED(hr))
{
//Send an error-specific message and do error handling.
goto Exit;
}
hr = pIDBCreateSession->CreateSession(NULL, IID_IDBCreateCommand,
(IUnknown**) &pIDBCrtCmd);
if (FAILED(hr))
{
//Send an error-specific message and do error handling.
goto Exit;
}
hr = pIDBCrtCmd->CreateCommand(NULL, IID_ICommandText, (IUnknown**)
&pICmdText);
if (FAILED(hr))
{
//Send an error-specific message and do error handling.
goto Exit;
}
// Request the ability to use the IRowsetPosition interface.
rowsetpropset[0].cProperties = 1;
rowsetpropset[0].guidPropertySet = DBPROPSET_ROWSET;
rowsetpropset[0].rgProperties = rowsetprop;
rowsetprop[0].dwPropertyID = DBPROP_CANFETCHBACKWARDS;
rowsetprop[0].dwOptions = DBPROPOPTIONS_REQUIRED;
rowsetprop[0].vValue.vt = VT_BOOL;
rowsetprop[0].vValue.boolVal = VARIANT_TRUE;
// Set the query text for the command.
hr = pICmdText->SetCommandText(DBGUID_SQL, L"Select * from Prices");
if (FAILED(hr))
{
//Send an error-specific message and do error handling.
goto Exit;
}
hr = pICmdText->QueryInterface(IID_ICommandProperties, (void**) &pICmdProps);
if (FAILED(hr))
{
//Send an error-specific message and do error handling.
goto Exit;
}
hr = pICmdProps->SetProperties(1, rowsetpropset);
if (FAILED(hr))
{
//Send an error-specific message and do error handling.
goto Exit;
}
// Creates an IRowsetPosition object for the returned rowset.
hr = pICmdText->Execute(NULL, IID_IRowsetPosition, NULL, NULL,
(IUnknown**)&pIRowsetPos);
if (FAILED(hr))
{
//Send an error-specific message and do error handling.
goto Exit;
} // Get a count of the number or rows returned in the rowset.
hr = pIRowsetPos->GetRecordCount(DB_NULL_HCHAPTER, &cbRecordCount);
if (FAILED(hr))
{
//Send an error-specific message and do error handling.
goto Exit;
}
// Do something here with the aquired row count information.
Exit:
// When finished, clear the properties arrays, release
// the interfaces and uninitialize the environment.
return;
Siehe auch
Referenz
IRowsetPosition::GetCurrentPosition