Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  3 669

•  TDictionary Custom Sort  5 800

•  Fast Watermark Sources  5 603

•  3D Designer  8 218

•  Sik Screen Capture  5 913

•  Patch Maker  6 388

•  Айболит (remote control)  6 378

•  ListBox Drag & Drop  5 237

•  Доска для игры Реверси  94 551

•  Графические эффекты  6 570

•  Рисование по маске  5 644

•  Перетаскивание изображений  4 759

•  Canvas Drawing  5 135

•  Рисование Луны  4 863

•  Поворот изображения  4 411

•  Рисование стержней  3 116

•  Paint on Shape  2 360

•  Генератор кроссвордов  3 228

•  Головоломка Paletto  2 551

•  Теорема Монжа об окружностях  3 328

•  Пазл Numbrix  2 200

•  Заборы и коммивояжеры  2 849

•  Игра HIP  1 820

•  Игра Go (Го)  1 740

•  Симулятор лифта  2 072

•  Программа укладки плитки  1 798

•  Генератор лабиринта  2 240

•  Проверка числового ввода  1 925

•  HEX View  2 225

•  Физический маятник  1 911

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

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



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

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

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

В 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. если у когото есть в несколько раз лучшие методы прошу пришлите их мне на мыло





Похожие по теме исходники

Weather Info 2 (информация о погоде)

Информация о процессах

Экспорт баз данных в Excel

База данных "Книжный магазин"

 

База данных Видеофильмов

База данных "Школа"

База данных без BDE

База данных студентов

 

Фильтрование данных

Pevrica (сжатие данных)

Примеры работы с БД

Примеры оформления DBGrid

 

Пример использования DBGrid

База предприятий и менеджеров 0.99

Консольное DOS приложение

Работа с принтером

 

Локализация приложений




Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте