共用方式為


IRowsetPosition::GetRecordCount

GetRecordCount 擷取目前資料列集中的資料列數目。

語法

HRESULT IRowsetPosition::GetRecordCount(ULONG * pcRows,);

參數

  • pcRows
    [in/out] 指向無正負號長數值的指標。此長數值必須由用戶端配置。

傳回值

  • S_OK
    方法已成功。
  • E_INVALIDARG
    pcRows 為 NULL。
  • E_UNEXPECTED
    此資料列集處於廢止狀態。

備註

此為資料列集中記錄數目的正確計數。

以下範例說明使用 IRowsetPosition::GetRecordCount 計算針對在 SQL Server 資料庫執行 SELECT * FROM Prices 時傳回的資料列集之資料列數目。

範例

//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, 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;

另請參閱

參考

IRowsetPosition::GetCurrentPosition

說明及資訊

取得協助 (SQL Server Compact 3.5 Service Pack 1)