Информация о базах данных при помощи TSessionDelphi , Базы данных , База данныхАвтор: Александр Баранецкий Часто приходиться решать те или иные задачи решение которых заложенны в информации о базе данных. Это состояние таблиц в базе, полей в таблице. Имена драйверов. Параметры алиасов, драйверов и.т.д, и.т.п. И тогда начинается самое интересное в деятельности программиста "как быть и что делать". В этой статье не будет описанно какими методоми получить данные из базы. Концепция этой статьи заложенна в описании "физических аспектов" баз. Ну как сказал мне начальник ЦИТа КОДТ господин Дукенбаев Саулебек - "Ты должень быть программистом, а не философом". Так что, ближе к сути. В 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. если у когото есть в несколько раз лучшие методы прошу пришлите их мне на мыло В статье описывается использование компонента TSession в Delphi для получения информации о базах данных, таких как имена баз, таблиц, полей, alias'ов, драйверов и параметров. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: База данных ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |