Clustered, exemple de propriété (VC++)
Cet exemple illustre la propriété Clustered d’un index. Notez que les bases de données Microsoft Jet ne prennent pas en charge les index en cluster. Cet exemple retourne la valeur False pour la propriété Clustered de tous les index de la base de données Northwind.
// BeginClusteredCpp.cpp
// compile with: /EHsc
#import "msadox.dll" no_namespace
#include "iostream"
using namespace std;
// Function declarations
inline void TESTHR(HRESULT x) {if FAILED(x) _com_issue_error(x);};
void ClusteredX();
int main() {
if ( FAILED(::CoInitialize(NULL) ) )
return -1;
ClusteredX();
::CoUninitialize();
}
void ClusteredX() {
HRESULT hr = S_OK;
// Define ADOX object pointers, initialize pointers. These are in ADODB namespace.
_CatalogPtr m_pCatalog = NULL;
_TablePtr m_pTable = NULL;
_IndexPtr m_pIndex = NULL;
// Define other variables here
_variant_t vIndex;
try {
TESTHR(hr = m_pCatalog.CreateInstance(__uuidof(Catalog)));
// Connect to the catalog.
m_pCatalog->PutActiveConnection("Provider='Microsoft.JET.OLEDB.4.0';data source='c:\\Northwind.mdb';");
// Enumerate Tables.
for (short iTable = 0 ; iTable < m_pCatalog->Tables->Count ; iTable++ ) {
vIndex = iTable;
m_pTable = m_pCatalog->Tables->GetItem(vIndex);
// Enumerate Indexes.
for (short iIndex = 0 ; iIndex < m_pTable->Indexes->Count ; iIndex++) {
vIndex = iIndex;
m_pIndex = m_pTable->Indexes->GetItem(vIndex);
cout << m_pTable->Name << " " ;
cout << m_pIndex->Name << " " << (m_pIndex->GetClustered() ? "True" : "False") << endl;
}
}
}
catch(_com_error &e) {
// Notify the user of errors if any.
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
printf("\n\tSource : %s \n\tdescription : %s \n ", (LPCSTR)bstrSource, (LPCSTR)bstrDescription);
}
catch(...) {
cout << "Error occurred in ClusteredX...."<< endl;
}
}