
Программы и Дизайн » Веб-разработка и Программирование » Компоненты для сред программирования
MicroOLAP PostgresDAC v2.6.0Год выпуска: 2010
Версия: 2.6.0 (Business license)
Разработчик:
MicroOLAP Technologies LTDПлатформа: Delphi 5-7, C++Builder 5-6, BDStudio 2005-2006, Turbo Delphi/ C++ 2006, Embarcadero(CodeGear) RAD Studio 2007-2010, XE (Delphi/C++Builder);
Совместимость с Vista: полная
Язык интерфейса: только английский
Таблэтка: Не требуется
Описание: Мощный набор компонентов прямого доступа к базам данных PostgreSQL(7.x, 8.x 9.x) для Deplhi/C++Builder.
Если для создания клиентского приложения PostgreSQL Вы используете PostgresDAC, то Вам не понадобятся никакие другие технологии (BDE, ODBC, ADO и т.п.), . кроме бесплатных (BSD license) клиентских библиотек от PostgreSQL.
*для корректного процесса разработки библиотеки
libpq.dll, pg_dump.dll, pg_restore.dll, libssl32.dll, libeay32.dll должны находиться в директории
windows/system32 либо в директории
bin среды разработки
[spoiler="Доп. информация"]
This release introduces PostgreSQL 9.x and RAD Studio XE support, the latest client libraries, native geometric types support, support for NOTIFY/LISTEN payload argument.
Full changelog:
[!] Добавлена поддержка RAD Studio XE
[!] TPSQLPointField, TPSQLCircleField, TPSQLBoxField, TPSQLLSegField added
[!] v9.0.0 client libraries added
[!] v9.0.0 dump & restore libraries (pg_dump.dll, pg_restore.dll)
[!] Payload argument proccessing added for new NOTIFY syntax to TPSQLNotify
[*] Locate() and FindKey() methods respect current filter now
[*] Test case for UUID fields added
[-] “Sometimes Locate() method do not work properly for fields not in active index” bug fixed
[-] “TPSQLDataset.AffectetRows always returns 0″ bug fixed
[-] “UUID field values are corrupted in IDE higher then 2009 if UTF8 encoding used” bug fixed
[/spoiler]
[spoiler="Скриншоты"]

[/spoiler]
[spoiler="Рекомендации"]
Для запуска приложения с использованием PostgresDAC 2.6.x, библиотеки клиента PostgreSQL 9,0
должны быть доступны на компьютере,в следующем составе:
libpq.dll
pg_dump.dll
pg_restore.dll
libssl32.dll
libeay32.dllСкопируйте эти файлы в каталог в переменную окружения PATH(Например, Windows\System32) и поместите их в каталог, в который установлено Клиентское приложение.
Кроме того, вы можете использовать пакет установки с PostgreSQL.org и установить только v9.0 клиентские библиотеки.
[spoiler="Еще немного об этом"]
Библиотека может быть загружен разработчик, используя процедуру
LoadPSQLLibrary;
Разработчик может предоставить имя библиотеки (и путь) для вызова
LoadPSQLLibrary;
Если библиотека не загружена, то вызов
LoadPSQLLibrary будет выполнен сразу перед любой необходимостью связи любого из объектов
TPSQLDatabase;
Разработчик может изменить значение глобальной переменной
PSQL_DLL таким образом, повлияв на поведение
LoadPSQLLibrary.
Другими словами у разработчика есть два способа контроля загрузки библиотеки. Он может загрузить его явным вызовом процедуры
LoadPSQLLibrary. Или установкой значения
Connected в
True любого объекта
TPSQLDatabase , затем произойдет вызов
LoadPSQLLibrary.
Давайте посмотрим на примере, как это можно сделать. Предположим, что нам необходимо загрузить библиотеку из "C:\Program Files\PostgreSQL\8,3\Bin\libpq.dll".
Код: program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, PSQLDbTables, PSQLTypes;
begin
LoadPSQLLibrary('C:\Program Files\PostgreSQL\8.3\bin\libpq.dll');
with TPSQLDatabase.Create(nil) do
try
DatabaseName := 'Test';
UserName := 'vasya';
UserPassword := 'mnogosala';
WriteLn(SelectStringDef('SELECT version()', 'unknown'));
finally
Free;
end;
ReadLn;
end. Во втором примере мы будем использовать глобальную переменную
PSQL_DLL и неявной загрузку библиотеки:
Код: program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, PSQLDbTables, PSQLTypes;
begin
PSQL_DLL := 'C:\Program Files\PostgreSQL\8.3\bin\libpq.dll';
with TPSQLDatabase.Create(nil) do
try
DatabaseName := 'Test';
UserName := 'vasya';
UserPassword := 'mnogosala';
WriteLn(SelectStringDef('SELECT version()', 'unknown'));
finally
Free;
end;
ReadLn;
end. Горячее переключение?
Естественно следовало бы предположить, что существует процедура
UnloadPSQLLibrary. И это было бы верно.
Соответственно мы можем
"переключать" библиотеки
"на лету". Но не безвозмездно для каждого, если не отключить(
Connected:=False каждый объект
TPSQLDatabase до горячего переключения:
Код: procedure HotSwitch(const ALibPath: string);
var I: integer;
begin
for I := 0 to DBList.Count - 1 do
TPSQLDatabase(DBList
).Close;
UnloadPSQLLibrary;
LoadPSQLLibrary(ALibPath);
end; Здесь DBList является глобальной переменной из модуля PSQLDbTables.pas.
Если вы хотите точно знать, где находятся загружаемые библиотеки изучите результат вызова этой: Код:
S := GetModuleName(SQLLibraryHandle);
[/spoiler]
[/spoiler]