Как получить схему таблицы - PullRequest
2 голосов
/ 06 января 2010

Я работаю с Microsoft visual studio 2005. Может кто-нибудь сказать мне, как получить имена таблиц и столбцов базы данных MS Access?

Ответы [ 3 ]

5 голосов
/ 06 января 2010

Как правило, вы должны использовать средства метаданных вашего драйвера базы данных, чтобы сделать это. Все API уровня вызовов базы данных, о которых я слышал, предоставляют методы / функции / процедуры, которые могут возвращать метаданные базы данных, обычно в виде набора результатов.

Вы не упомянули ни одного языка, поэтому давайте предположим, что вы используете C #. В этом случае вы создадите объект соединения OleDB (OleDB - каркас драйвера для языков .NET) и вызовете для него метод GetOleDbSchemaTable. Это даст вам объект DataTable, который даст вам доступ к строкам данных, которые передают эту информацию.

Пример OleDB см .: http://msdn.microsoft.com/en-us/library/aa288452(VS.71).aspx

Для метода GetOleDbSchemaTable см .: http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbconnection.getoledbschematable(VS.71).aspx

Информацию о типах метаданных, предоставляемых OleDB, смотрите: http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbschemaguid_members(VS.71).aspx

1 голос
/ 06 января 2010

Этот пример VBA, но должна быть возможность перевести идею, так как она использует ADO.

Dim rs As ADODB.Recordset
Dim cn As ADODB.Connection

Set cn = "Provider = Microsoft.Jet.OLEDB.4.0; " _
    & "Data Source = MyDB.mdb"

Set rs = cn.OpenSchema( _
    adSchemaTables, Array(Empty, Empty, Empty))
Debug.Print rs.GetString
rs.Close
Set rs = Nothing

Аналогично adSchemaTables, adSchemaColumns может использоваться для возврата столбцов. Ограничения: TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, поэтому вы можете видеть, что могут быть возвращены данные столбца для конкретной таблицы или все столбцы и имя связанной таблицы. Например:

Set rs = cn.OpenSchema( _
    adSchemaTables, Array(Empty, Empty, "Employees", "name"))
Debug.Print rs("TABLE_NAME") & "." _ 
    & rs("COLUMN_NAME") & ": " _
    & rs("DATA_TYPE")

Для получения дополнительной информации см https://msdn.microsoft.com/en-us/library/ms676705.aspx

1 голос
/ 06 января 2010

Вы можете сделать это, запросив следующие таблицы

  • MSysAccessObjects

    MSysAccessXML

    MSysACEs

    MSysObjects

    MSysQueries

    MSysRelationships

если в этих таблицах не отображаются параметры открытых таблиц и на вкладке «Просмотр» установите флажок «Системные объекты»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...