¿Cuál es el equivalente de OleDb para INFORMATION_SCHEMA?

En SQL puedes usar

SELECCIONAR * FROM INFORMATION_SCHEMA.TABLES

etc. para get información sobre la estructura de la database. Necesito saber cómo lograr lo mismo para una database de Access.

La operación equivalente se puede lograr usando

Método OleDbConnection.GetOleDbSchemaTable ()

vea http://support.microsoft.com/kb/309488 para más información

En OLEDB se puede acceder como DBSCHEMA_TABLES. El siguiente código de C ++ demuestra la recuperación de la información de tablas de un proveedor OLEDB:

#include <atldb.h> ... // Standard way of obtaining table node info. CAccessorRowset<CDynamicAccessor, CBulkRowset> pRS; pRS.SetRows(100); CSchemaTables<CSession>* pBogus; hr = session.CreateSchemaRowset(NULL, 0, NULL, IID_IRowset, 0, NULL, (IUnknown**)&pRS.m_spRowset, pBogus); if (FAILED(hr)) goto lblError; hr = pRS.Bind(); if (FAILED(hr)) goto lblError; hr = pRS.MoveFirst(); if (FAILED(hr)) goto lblError; while (S_OK == hr) { wstring sTableSchema(pRS.GetWCharValue(L"TABLE_SCHEMA")); wstring sTableName(pRS.GetWCharValue(L"TABLE_NAME")); wstring sTableType(pRS.GetWCharValue(L"TABLE_TYPE")); ... hr = pRS.MoveNext(); } pRS.Close();