Using OLE DB Error Objects (SQL Server Compact Edition)
Quando si verificano errori durante l'esecuzione di un'applicazione basata su SQL Server 2005 Compact Edition (SQL Server Compact Edition), il provider OLE DB per SQL Server Compact Edition restituisce e archivia una matrice di oggetti errore, ai quali è possibile accedere utilizzando OLE DB nel modo consueto. Il provider OLE DB per SQL Server Compact Edition restituisce errori per ogni interfaccia supportata dal provider. Per ulteriori informazioni, vedere Interfacce OLE DB implementate (SQL Server Compact Edition). Per informazioni sul meccanismo generale applicato da un client OLE DB per recuperare informazioni sull'errore, vedere la sezione relativa a Microsoft OLE DB nella documentazione del kit SDK di Microsoft Data Access Components (MDAC), disponibile in MSDN Library.
Esempi
Nell'esempio seguente viene descritto come recuperare i numeri di errore specifici del provider quando si utilizza il provider OLE DB per SQL Server Compact Edition.
/* This code sample demonstrates a routine that can handle and display errors from the OLE DB provider for SQL Server Compact Edition. The interface returning the error is pIUnknown, and riid is the REFIID of that interface.*/
// QueryInterface for the ISupportErrorInfo interface
hr = pIUnknown->QueryInterface(IID_ISupportErrorInfo,
(void**)&pISupportErrorInfo);
if(FAILED(hr) || NULL == pISupportErrorInfo)
return;
// Determine whether the interface even supports errors. If it does,
// ISupportErrorInfo will return S_OK for that interface.
hr = pISupportErrorInfo->InterfaceSupportsErrorInfo(riid);
pISupportErrorInfo->Release(); // release unnecessary interface
if(S_OK == hr)
{
// This interface supports returning error information.
// Get the error object from the system for this thread.
hr = GetErrorInfo(0, &pIErrorInfo);
if(FAILED(hr) || NULL == pIErrorInfo)
{
return;
}
hr = pIErrorInfo->QueryInterface(IID_IErrorRecords,
(void **) &pIErrorRecords);
pIErrorInfo->Release(); // Release unnecessary interface
// Determine the number of records in this error object
hr = pIErrorRecords->GetRecordCount(&ulNumErrorRecs);
// Loop over each error record in the error object to display
// information about each error. Errors are returned.
for (dwErrorIndex = 0; dwErrorIndex < ulNumErrorRecs; dwErrorIndex++)
{
// Attempt to retrieve basic error information for this error.
hr = pIErrorRecords->GetBasicErrorInfo(dwErrorIndex, &ErrorInfo);
// Retrieve standard error information for this error.
hr = pIErrorRecords->GetErrorInfo(dwErrorIndex, NULL,
&pIErrorInfoRecord);
// Get the description of the error.
hr = pIErrorInfoRecord->GetDescription(&bstrDescriptionOfError);
// Get the source of the error.
hr = pIErrorInfoRecord->GetSource(&bstrSourceOfError);
if(NULL != pIErrorInfoRecord)
{
pIErrorInfoRecord->Release(); // Release unnecessary interface
}
// Print the native error number for this error. Error numbers are
// are documented in the Troubleshooting section.
wprintf(L"Native Error Code: %l\n", ErrorInfo.dwMinor);
}
pIErrorRecords->Release(); // Release unnecessary interface.
}
}
Vedere anche
Riferimenti
Programmazione di OLE DB per SQL Server Compact Edition