Sign in Join
Wiki copytemporary

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.

Contents

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.

Revision 3, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.