С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/187: Рейтинг темы: голосов - 187, средняя оценка - 5.00
 Аватар для adm1nspb
2 / 2 / 2
Регистрация: 12.12.2011
Сообщений: 95

Embarcadero C++ Builder и PostgreeSQL

27.02.2013, 22:02. Показов 39883. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Возникла необзодимость работы с PostgreeSQL на Embarcadero C++ Builder.
Собстенно возник вопрос - с чего начать?
Какие нужны компоненты и если можно - киньте ссылку на примеры работы с PostgreeSQL ..
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.02.2013, 22:02
Ответы с готовыми решениями:

Embarcadero C++ Builder XE и AnsiString значения из БД
Имеется старый проект, который необходимо перевести на Embarcadero C++ Builder XE, БД на Sybase, для отображения данных используются либо...

Можно ли использовать C++ Builder v11 если купить Embarcadero C++Builder XE8
День добрый! Есть старый проект С++. Он компилируется на CodeGear™ C++Builder Version 11. Но на это ПО утеряна лицензия, сейчас...

Как открыть проект C++Builder 6 в Embarcadero C++Builder 10.3 Community Edition?
Здравствуйте. Как открыть проект C++Builder 6 в новом Embarcadero C++Builder 10.3 Community Edition?

28
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
27.02.2013, 23:50
adm1nspb, здравствуйте!

Цитата Сообщение от adm1nspb Посмотреть сообщение
с чего начать?
Начать надо с установки СУБД и настройки драйвера ODBC для подключения к БД PostgreSQL через компоненты ADO.
В частности, само соединение организуется стандартным образом посредством компоненты TADOConnection.
0
 Аватар для adm1nspb
2 / 2 / 2
Регистрация: 12.12.2011
Сообщений: 95
04.03.2013, 18:13  [ТС]
Цитата Сообщение от The_Immortal Посмотреть сообщение
adm1nspb, здравствуйте!

Начать надо с установки СУБД и настройки драйвера ODBC для подключения к БД PostgreSQL через компоненты ADO.
В частности, само соединение организуется стандартным образом посредством компоненты TADOConnection.
Установил PostgreeSQL 9.2.3. , в установка/удаление программ я вижу установленный PgqlODBC_x64, но если честно не понимаю как его (ODBC драйвер) настраивать - не подскажите?

Добавлено через 5 часов 1 минуту
PostgreSQL в системе установлен 64 битный.
Настраиваю ODBC в панели управления/администрирование/источники данных ODBC



Тестирование проходит без ошибок.

Захожу в проект Embarcadreo XE2
Там на форму помещаю ADOConnection


При нажати тест выскакивает ошибка
Не выполнена проверка при инициализации поставщика.(Майкрсофт)(Диспетчер драйверов ОДБС)
В указанном DSN драйвера и архитектура предложения не соответствуют друг другу.


Можете подсказать - почему???
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.03.2013, 19:14
adm1nspb,
Цитата Сообщение от adm1nspb Посмотреть сообщение
Можете подсказать - почему???
Для справки: ODBC 32/64.

Т.о., для создания источника данных в нашем случае необходимо запустить c:\Windows\SysWOW64\odbcad32.exe.

Далее выбрать:

1
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
10.03.2013, 19:17
PgDAC - отличный вариант... до сих пор мои проги на этих компонентах юзаются в Укртелекоме
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.03.2013, 22:01
Lord_Voodoo, в смысле "Devart PgDAC"?

А чем ADO (ODBC) в этом случае будет хуже? Через PgDAC будет ощущаться значительный прирост в скорости за счет прямого доступа к СУБД?
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
11.03.2013, 00:01
The_Immortal, ну согласитесь, что универсальные компоненты - это вроде бы умеют многое, а сущности ничего... когда узко профильные компоненты затачиваются под конкретную задачу... а эта контора делает ну очень качественные компоненты что в использовании, что в функциональности, что по скорости...

и, кстати, тут не только от компонентов скорость доступа зависит, тут и сам PostgreSQL очень радует скоростью... когда переехал на него с оракла, мне пользователи чуть ли не стоя аплодировали)))

да и ODBC - поделка мелкософта, а это уже о многом говорит
2
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
11.03.2013, 01:41
Lord_Voodoo, еще один плюс узко-специализированих компонентов - это присутсвие некоторых параметров, свойственных только этой БД.
Ну и конечно, работа самого компонента через API даной БД, не всех функций, но все же ...

Добавлено через 3 минуты
P.S. И это не только про PgDAC. Если есть возможность использовать "родной" компонент, про ADO можно забыть
1
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
11.03.2013, 01:53
_Dimon_, ну для тех функций и возможностей, которые я использовал в своих проектах, PgDac-а вполне хватало... а вот ADO, сомневаюсь, что такое осилил бы... он даже не все функции Аксесса поддерживает, что, ИМХО, странно...
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
11.03.2013, 01:56
Lord_Voodoo,
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
он даже не все функции Аксесса поддерживает
А вот тут можно поточнее?
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
11.03.2013, 02:27
The_Immortal, да здесь на форуме даже была тема, что какие-то встроенные функции Аксесса АДО выплевывало исключением... что-то с датами вроде бы... уж так и не вспомню, да и не работал никогда особо ни с АДО, ни с аксессом
1
 Аватар для adm1nspb
2 / 2 / 2
Регистрация: 12.12.2011
Сообщений: 95
21.03.2013, 13:16  [ТС]
Цитата Сообщение от The_Immortal Посмотреть сообщение
adm1nspb,

Для справки: ODBC 32/64.

Т.о., для создания источника данных в нашем случае необходимо запустить c:\Windows\SysWOW64\odbcad32.exe.

Далее выбрать:

Вложение 242369
Тем не менее с подключением через ADO я вроде разобрался, но возникли несколько вопросов.
Прошу, камнями не бейте, однако я в начале пути...словом...спасибо вам за Ваши ответы..

1. Вопрос по кодировкам. Если программа ориентирована под Win - верно ли я делаю
-При создании БД в gpAdmin III Выбираю кадировку Win1251 - ведь в Win кодировка 1251
-При создании нового источника данных в Администрировании источников данных ODBC выбираю ANSI.
(Скажите - почему мне во вложении было рекомендовано использовать Unicode ???? Разве кодировка в C++ не ANSi ?)
Верно ли это? - не хочется потом...все начинать сначала.

2. Предположим я напишу программу которая работает с конкретной БД через ADO при помощи ODBC

Как я понимаю, в программу уже будет "вшито" использовании конкретного "Data Source" .

а) Хранится ли при этом название серера, пользователь и пароль в программе?
Вопрос из серии - если надо будет сменить пароль, а программа откомпилирована, или подменить БД.

б) Как лучше организовать установку программы и ее БД в виде готового решения?

Добавлено через 22 минуты
Еще вопрос
3. Если программа содержит меню, и ряд вызываемых из него форм, некоторые из которой использую БД,
Компоненты доступа к БД (TADOConnection напр) следует размещать на каждой такой форме, или есть более красивое решение?
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
21.03.2013, 13:20
adm1nspb,
Цитата Сообщение от adm1nspb Посмотреть сообщение
Скажите - почему мне во вложении было рекомендовано использовать Unicode ????
Я работаю под XE2, собственно на него и ориентируюсь.


Цитата Сообщение от adm1nspb Посмотреть сообщение
2. Предположим я напишу программу которая работает с конкретной БД через ADO при помощи ODBC
а) Хранится ли при этом название серера, пользователь и пароль в программе?
Вся эта информация задается в "Пользовательском DSN". Данные по конкретным источникам данных хранятся в реестре.


Цитата Сообщение от adm1nspb Посмотреть сообщение
б) Как лучше организовать установку программы и ее БД в виде готового решения?
Автоматическое развертывание ODBC-коннектора, атакже создание и последующая настройка конкретного источника данных по этому коннектору.


Цитата Сообщение от adm1nspb Посмотреть сообщение
3. Если программа содержит меню, и ряд вызываемых из него форм, некоторые из которой использую БД,
Компоненты доступа к БД (TADOConnection напр) следует размещать на каждой такой форме, или есть более красивое решение?
Компонент TADOConnection в общем случае вообще должен быть один.
Насколько это "красиво" я не знаю, но есть DataModule, куда можно складировать все необходимые компоненты и при необходимости оттуда их вызывать.
0
 Аватар для adm1nspb
2 / 2 / 2
Регистрация: 12.12.2011
Сообщений: 95
21.03.2013, 20:43  [ТС]
Я работаю под XE2, собственно на него и ориентируюсь.
Т.е. кодировку самой БД настраиваете - 1251, а настройку подключения odbc - unicode ?
А чем плох мой вариант?

Вся эта информация задается в "Пользовательском DSN". Данные по конкретным источникам данных хранятся в реестре.
Т.е. при изменение данных в реестре данные в программе (вижу их в AdoConnection ->ConnectionString ) изменятся автоматически при ее запуске - верно?

Автоматическое развертывание ODBC-коннектора, атакже создание и последующая настройка конкретного источника данных по этому коннектору.
Вы бы не могли более подробно раскрыть тему? Или дать ссылку "что почитать" ?

Компонент TADOConnection в общем случае вообще должен быть один.
Насколько это "красиво" я не знаю, но есть DataModule, куда можно складировать все необходимые компоненты и при необходимости оттуда их вызывать.
Наверно я туплю, но вот что я не понимаю
Есть основная форма, и несколько дополнительных.
Есть несколько таблиц в БД, каждая из них содержит несколько полей (колонок).

Если в основной форме я настраиваю TADOConnection, не могли бы вы более подробно рассказать как работать с БД в других формах? Например как вы говорите с помощью DataModule. Может есть примеры?

...Подключил форму DataModule к проекту. Разместил на ней TADOConnection и TadoTable
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
22.03.2013, 00:31
adm1nspb,
Цитата Сообщение от adm1nspb Посмотреть сообщение
Т.е. кодировку самой БД настраиваете - 1251, а настройку подключения odbc - unicode ?
А чем плох мой вариант?
Выбирайте ANSI, поэкспериментируйте


Цитата Сообщение от adm1nspb Посмотреть сообщение
Т.е. при изменение данных в реестре данные в программе (вижу их в AdoConnection ->ConnectionString ) изменятся автоматически при ее запуске - верно?
В ConnectionString Вы можете увидеть среди прочего опцию "Data Source". Именно она определяет какой именно источник данных использовать среди всего списка доступных DSN. При изменении содержимого (создании нового) конкретного DSN (данные по DSN хранятся в реестре) имя этого DSN не изменится (либо при создании его можно задать таким, какое оно определено в ConnectionString[Data Source]). Соответственно, приложение (ADOConnection) будет работать с этим самым DSN, которое мы изменили или создали. И работает оно по имени. Надеюсь, что стало немножечко понятнее

На всякий случай приведите пример своей ConnectionString. Быть может Вы там сразу указываете информацию по коннекту с конкретной БД, минуя источник данных.


Цитата Сообщение от adm1nspb Посмотреть сообщение
Вы бы не могли более подробно раскрыть тему? Или дать ссылку "что почитать" ?
Прежде чем я Вас направлю на Путь, давайте кое-что уточним. Планируется:

1) разворачивать приложение + СУБД PostgreSQL + БД + ODBC Connector;

2) разворачивать только приложение + ODBC Connector. Сама СУБД + БД располагаются отдельно (не на машине с приложением);

3) свой вариант (уточнить что именно планируется).

?


Цитата Сообщение от adm1nspb Посмотреть сообщение
...Подключил форму DataModule к проекту. Разместил на ней TADOConnection и TadoTable
Все правильно. Какие сложности возникли далее?


Не по теме:

P.S. Побольше бы таких вменяемых аскеров.

0
 Аватар для ExeiLj
13 / 13 / 3
Регистрация: 02.08.2012
Сообщений: 128
23.04.2013, 19:08
Помогите пожалуйста:

Установил последний PostgreSQL,
установил из Stack Builder'а - psqlODBC драйвер (The official PostgreSQL ODBC driver (32bit version). Packaged by EnterpriseDB.),
но в "Источниках данных (ODBC)" он не появился.
Соответственно и в С++ тоже подключить не могу...

Посоветуйте чего не хватает?

Win7 x64 если имеет значение

Добавлено через 1 час 20 минут
Цитата Сообщение от The_Immortal Посмотреть сообщение
Т.о., для создания источника данных в нашем случае необходимо запустить c:\Windows\SysWOW64\odbcad32.exe.
Всем спасибо, оказывается ндо запускать ИМЕННО из папки SysWOW64 и ниоткуда больше!

Добавлено через 22 часа 53 минуты
Еще вопрос возник:
В данном случае с АДО приходится указывать БД, Сервер(Хост), Порт, SSL в самом драйвере.
Можно ли это изменять как-то в самой программе?
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
23.04.2013, 22:21
ExeiLj,
Цитата Сообщение от ExeiLj Посмотреть сообщение
В данном случае с АДО приходится указывать БД, Сервер(Хост), Порт, SSL в самом драйвере.
Можно ли это изменять как-то в самой программе?
Да, возможно. Вариантов множество. Вот некоторые из них:

1. Делать это напрямую через реестр, ибо информация об источниках данных (DSN) хранится именно там.

2. Использовать консольную тулзу odbcconf.exe, через которую также можно изменять DSN.

Ну и сразу пару замечаний по поводу второго варианта:

2.1.
ODBCCONF.exe will be removed in a future version of Windows Data Access Components. Avoid using this feature, and plan to modify applications that currently use this feature. You can use PowerShell commands to manage drivers and data sources. For more information about these PowerShell commands, see Windows Data Access Components PowerShell Commands.
http://msdn.microsoft.com/en-u... 85%29.aspx
Речь, скорее всего идет про Win 8, т.к. в Win 7 (и ранее) odbcconf.exe наблюдается. Тем не менее это надо учитывать.

2.2. Как известно, начиная с Win Vista, ОС снабжается WDAC'ом (Windows Data Access Components), а не MDAC'ом (Microsoft Data Access Components) - то, что поставляет OLE DB, ODBC и ADO. Так вот, для 64-битной винды (Win 7 X64) этот WDAC идет также 64-битный. Соответственно, odbcconf.exe не увидит 32-битные драйвера, выдавая ошибку:
CONFIGDSN: ...
Компонент не найден в реестре с кодом ошибки ...
...
Так что и этот момент также стоит учитывать.

3. Использовать файловые DSN, которые потом можно подгружать вот тут:



Файловые DSN представляются файлами с расширениями *.udl и *.dsn. Почитать про их формирование можно тут и тут соответственно.
1
 Аватар для ExeiLj
13 / 13 / 3
Регистрация: 02.08.2012
Сообщений: 128
24.04.2013, 15:10
Самый простой способ - указать и менять в коде ADOConnection ConnectionString:
C++
1
Driver={PostgreSQL UNICODE};Server=127.0.0.1;Port=5432;Database=postgres;Uid=user;Pwd=pass;sslmode=allow;
(c) http://www.connectionstrings.c... r-psqlodbc
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
24.04.2013, 17:24
ExeiLj,
Цитата Сообщение от ExeiLj Посмотреть сообщение
Самый простой способ
Эх... А про него-то я и забыл

Благодарю!

Действительно, на указанном выше сайте можно найти строки соединения для большинства СУБД.
0
0 / 0 / 0
Регистрация: 23.03.2021
Сообщений: 6
20.07.2021, 23:22
Lord_Voodoo, Максим Сергеевич, а PgDAC у вас как появился?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.07.2021, 23:22
Помогаю со студенческими работами здесь

Руководство по C++ Builder X2 Embarcadero
Может ли кто нибудь помочь с руководством пользователя для C++ Builder X2 Embarcadero лучше на русском но можно на английском с уклоном в...

Embarcadero 2010 C++ Builder
вот тут ошибка одна , заколебала появляется внезапно, и так же внезапно исчезает вот код: void __fastcall TMainWnd::N2Click(TObject...

Preview в Embarcadero® C++Builder 10.1 Berlin
Доброго времени форумчане. Вот появилась необходимость в билдере нарисовать нечто вроде проводника с возможностью превью. ФЙайло будет...

ListView в C++Builder XE7 (embarcadero)
Привет всем помогите пожалуйста, как добавить строку в ListView пробовал вот за таким кодом: ...

В Embarcadero C++ Builder не показывается подсказка по TTM_TRACKACTIVATE
(это появилось в Embarcadero C++ Builder. Та же программа, откомпилированная в старом C++ Builder 5.0, показывает подсказки) При...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru