¿Cuál es el equivalente de OleDb para INFORMACIÓN_SCHEMA?
Pregunta
En SQL puedes usar
SELECCIONAR * DE INFORMACIÓN_SCHEMA.TABLES
etc. para obtener información sobre la estructura de la base de datos.Necesito saber cómo lograr lo mismo para una base de datos de Access.
Solución
La operación equivalente se puede lograr usando
Método OleDbConnection.GetOleDbSchemaTable().
ver http://support.microsoft.com/kb/309488 para más información
Otros consejos
En OLEDB se puede acceder a él como DBSCHEMA_TABLES.El siguiente código C++ demuestra la recuperación de la información de las 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();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow