Kopia wikimirror

To jest mirror wiki z pascal.chat. Edycja, historia i logowanie są tam.

Database metadata/pl

English · Polski

Metadane bazy danych to dane o bazie danych. W tym artykule omówimy również informacje o połączeniu do bazy danych oraz o serwerze i kliencie bazy danych.

SQLDB

Informacje o serwerze i kliencie

W wersjach rozwojowych FPC z listopada 2012 r. można użyć funkcji „GetConnectionInfo”. Zobacz dokumentację GetConnectionInfo Wyjaśnienie:

jeśli T*Connection, o którym mowa, tego (tej części) nie obsługuje, to funkcje zwrócą puste wartości.

Specyfika Firebird/Interbase

Oprócz powyższych funkcji, od grudnia 2012 r. złącze Firebird udostępnia funkcję GetODS , która pokazuje starszą (major) wersję ODS bazy danych, z którą jesteś połączony. Ta wersja ODS określa, jakie funkcje są dostępne do użycia – ponieważ możesz m.in. użyć bazy danych utworzonej za pomocą Firebird 2.1 z serwerem Firebird 2.5, ale funkcje będą ograniczone do funkcjonalności 2.1.

Informacje o schemacie

Schemat znany jest również jako język DDL bazy danych (Data Definition Language). Schemat jest reprezentacją tabel, widoków, procedur i innych obiektów, które tworzą bazę danych.

Zobacz dokumentacja pobierania informacji o schemacie

GetSchemaInfoSQL nie jest zaimplementowany w równym stopniu dla każdego połączenia; połączenie do Firebird ma obecnie większość zaimplementowanych funkcjonalności; pozostałe (np. MS SQL, Sybase, Oracle) mają mniejszą funkcjonalność. Łatki są mile widziane.

Propozycja rozszerzenia/ujednolicenia

Note: Na liście mailingowej FPC były dyskusje/propozycje jak ujednolicić i rozszerzyć pobieranie metadanych dla SQLDB. Proszę zaktualizować poniżej wszystkie wyniki tej dyskusji:

Zasugeruj zbieżność do standardowego nazewnictwa kolumn INFORMATION_SCHEMA SQL w istniejącym GetSchemaInfoSQL. Więc dla:

pascal
TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE ('BASE TABLE', 'VIEW', 'GLOBAL TEMPORARY', 'LOCAL TEMPORARY'), ...

(dla baz, które nie implementują widoków INFORMATION_SCHEMA pozostaw zapytania do tabel systemowych, ale używaj w/w nazewnictwa kolumn)

pascal
TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION, COLUMN_DEFAULT, IS_NULLABLE, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, ..., CHARACTER_SET_NAME, COLLATION_NAME, DOMAIN_NAME, ..., IS_IDENTITY, IS_GENERATED
pascal
SPECIFIC_CATALOG, SPECIFIC_SCHEMA, SPECIFIC_NAME, ROUTINE_CATALOG, ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE ('PROCEDURE', 'FUNCTION',...), ...

Uwaga: Z drugiej strony Delphi używa nieco innego nazewnictwa kolumn, opisanego w Struktura zbiorów danych metadanych Jednak testy ze sterownikami Delphi XE MySQL i Interbase DBX pokazują wyniki niezgodne z tą specyfikacją (np. dla stTables zwracane są takie kolumny: CatalogName, SchemaName, TableName, TableType (bez "_") i bez kolumny RECNO), a dla metody ADO OpenSchema zwracane są takie kolumny:

pascal
siTables (adSchemaTables):	TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE(widestring)
    siColumns (adSchemaColumns):	TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION, COLUMN_DEFAULT, IS_NULLABLE, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, ..., CHARACTER_SET_NAME, COLLATION_NAME, DOMAIN_NAME, ..., IS_COMPUTED
    siIndexes (adSchemaIndexes):	TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, INDEX_CATALOG, INDEX_SCHEMA, INDEX_NAME, PRIMARY_KEY(boolean), UNIQUE(boolean), CLUSTERED(boolean), TYPE(word), FILL_FACTOR, ..., ORDINAL_POSITION, COLUMN_NAME, ... (jeden wiersz na ka??d?? kolumn?? w indeksie)
    siProcedures (adSchemaProcedures):	PROCEDURE_CATALOG, PROCEDURE_SCHEMA, PROCEDURE_NAME, PROCEDURE_TYPE(Smallint), ...
    siSchemata (adSchemaSchemata):	CATALOG_NAME, SCHEMA_NAME, SCHEMA_OWNER, ...

Narzędzie metadanych TSQLQuery w Lazarusie

GetSchemaInfoSQL jest używany w Lazarusie w trybie projektowania, jeśli używasz Inspektora obiektów do edycji właściwości SQL TSQLQuery , w którym połączenie z bazą danych jest aktywne, to możesz nie tylko edytować tekst zapytania SQL w zakładce Kod SQL, ale także pobrać informacje w zakładce Metadane, wypełniając niektóre szczegóły i naciskając klawisz Play/Go:

MetaDataEditor.png

Informacje o schemacie słownika danych

Istnieje oddzielny pakiet słownika danych FPC, który obsługuje informacje o schemacie. Ten pakiet jest używany w projekcie lazdatadesktop dostarczanym z Lazarusem.

Informacje specyficzne dla bazy danych

Wiele baz danych ma albo

które pokazują informacje o obiektach bazy danych, wersji serwera itp.

Przykładami są zmienne @@VERSION w serwerach MS SQL Server i Sybase.

Jeśli twoja biblioteka połączeń z bazą danych nie obsługuje innych sposobów uzyskania tych informacji, możesz jej użyć (i przesłać prośbę o poprawkę/ulepszenie do odpowiedniego narzędzia do śledzenia błędów w celu włączenia do bazy danych SQL/Zeos itp.)

Zobacz także


From the Free Pascal wiki, page "Database metadata/pl", as the Internet Archive kept it on 2023-09-24, last changed on 2022-10-04. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Wersja 4, ostatnia zmiana: WikiArchive, .