Что является эквивалентом OleDb для INFORMATION_SCHEMA
Вопрос
В SQL вы можете использовать
ВЫБЕРИТЕ * ИЗ INFORMATION_SCHEMA.ТАБЛИЦЫ
и т.д., чтобы получить информацию о структуре базы данных.Мне нужно знать, как добиться того же самого для базы данных Access.
Решение
Эквивалентная операция может быть выполнена с помощью
OleDbConnection.Метод GetOleDbSchemaTable().
видишь http://support.microsoft.com/kb/309488 для получения дополнительной информации
Другие советы
В OLEDB к нему можно получить доступ как к DBSCHEMA_TABLES.Следующий код на C ++ демонстрирует извлечение информации из таблиц от поставщика 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();
Не связан с StackOverflow