Информация о базах данных при помощи TSession

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Автор: Александр Баранецкий

Часто приходиться решать те или иные задачи решение которых заложенны в информации о базе данных. Это состояние таблиц в базе, полей в таблице. Имена драйверов. Параметры алиасов, драйверов и.т.д, и.т.п. И тогда начинается самое интересное в деятельности программиста «как быть и что делать». В этой статье не будет описанно какими методоми получить данные из базы. Концепция этой статьи заложенна в описании «физических аспектов» баз.

Ну как сказал мне начальник ЦИТа КОДТ господин Дукенбаев Саулебек — «Ты должень быть программистом, а не философом». Так что, ближе к сути.

В Delphi для получения инфы о базе очень хорошо применять Tsession. можно применить компонент Session на закладке BDE. Но будем вызывать методы компонента так «вручную». хочу обратить ваше внимание на следующие «полезные» процедуры и функции.

// Собирает и заносит в «LIST» наши искомые базы.

procedure TSession.GetDatabaseNames(List: TStrings);

// Принимает на себя имя базы и заносит в «LIST» наши искомые Tables.

procedure TSession.GetTableNames(const DatabaseName, Pattern: string;

Extensions, SystemTables: Boolean; List: TStrings);

// Принимает базу затем таблицу в ней и заносит в «LIST» наши искомые поля

procedure TSession.GetFieldNames(const DatabaseName,

TableName: string; List: TStrings);

// Тоже полезная проца Заносит в лист ALIAS»ы

procedure TSession.GetAliasNames(List: TStrings);

Alias(для тех кто не знает) — это псевдоним базы. Т.е кней можно обратиться не по конкретному пути например «C:\data\Hello.db» а по псевдониму, например «Hello», в котором хранится имя базы. Например я знаю кто такая АЛСУ а до сих пор не знаю ее имя, Псевдоним!!!.

// Возвращает в List имена зарегестрированных драйверов.

procedure TSession.GetDriverNames(List: TStrings);

// Возвращает в лист все параметры указанного драйвера.

procedure TSession.GetDriverParams(const DriverName: string; List: TStrings);

// Возращает в лист»е параметры указанного алиаса

procedure TSession.GetAliasParams(const AliasName: string; List: TStrings);

// Возращает в строке имя драйвера которого использует алиас.

function TSession.GetAliasDriverName(const AliasName: string): string;

Выше были описанны только самые основные методы Tsession, как правило наиболее часто используемые. Ну и чтобы не быть голословными небольшой примерчик «дерева» базы, почти как у Data Base Tree только еще и список полей фиксируется в дереве.

procedure Tdbview.Button4Click(Sender: TObject);

var

I, D, q: Integer;

S, Tables, Fields: TStringList;

Mt: TTreeNode;

begin

try

with Dt.Items do

begin

s := TStringList.Create;

Tables := TStringList.Create;

fields := TStringList.Create;

Session.GetDatabaseNames(s);

for i := 0 to S.Count — 1 do

begin

try

mt := Add(nil, S[i]);

Session.GetTableNames(S[i], », true, true, Tables);

for D := 0 to Tables.Count — 1 do

begin

AddChild(MT, Tables[d]);

Session.GetFieldNames(S[i], Tables[d], Fields);

for q := 0 to Fields.Count — 1 do

AddChild(Mt[d], Fields[q]);

end;

except

Continue;

end;

end;

end;

finally

s.Free;

Tables.Free;

Fields.Free;

end;

end;

При написании этого алгоритма был «высвечен» баг который мне внезапно открыл «запоролированную базу» и что только люди не скрывают да баги подводят. О баге этом поговорим в другой раз.

Все примеры вызова процедур, а также пример «дерева» вы сможете найти на, хорошо закоментированном, приложенном демо пректе pr_data. Для любой Delphi(5-7).

P.S. если у когото есть в несколько раз лучшие методы прошу пришлите их мне на мыло

{/codecitation}

Добавить комментарий