Что является эквивалентом OleDb для INFORMATION_SCHEMA

StackOverflow https://stackoverflow.com/questions/117974

  •  02-07-2019
  •  | 
  •  

Вопрос

В 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();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top