INFORMATION_SCHEMA的OleDb等价物是什么

时间:2008-09-22 22:19:19

标签: .net sql oledb

在SQL中,您可以使用

SELECT * FROM INFORMATION_SCHEMA.TABLES

等获取有关数据库结构的信息。我需要知道如何为Access数据库实现相同的功能。

2 个答案:

答案 0 :(得分:4)

可以使用

完成等效操作

OleDbConnection.GetOleDbSchemaTable()方法。

有关详细信息,请参阅http://support.microsoft.com/kb/309488

答案 1 :(得分:0)

在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();