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

Embarcadero C++ Builder и PostgreeSQL

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

Author24 — интернет-сервис помощи студентам
Добрый день!
Возникла необзодимость работы с PostgreeSQL на Embarcadero C++ Builder.
Собстенно возник вопрос - с чего начать?
Какие нужны компоненты и если можно - киньте ссылку на примеры работы с PostgreeSQL ..
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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?

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

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

Цитата Сообщение от adm1nspb Посмотреть сообщение
с чего начать?
Начать надо с установки СУБД и настройки драйвера ODBC для подключения к БД PostgreSQL через компоненты ADO.
В частности, само соединение организуется стандартным образом посредством компоненты TADOConnection.
0
2 / 2 / 2
Регистрация: 12.12.2011
Сообщений: 95
04.03.2013, 18:13  [ТС] 3
Цитата Сообщение от 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 4
adm1nspb,
Цитата Сообщение от adm1nspb Посмотреть сообщение
Можете подсказать - почему???
Для справки: ODBC 32/64.

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

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

Embarcadero C++ Builder   и  PostgreeSQL
1
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
10.03.2013, 19:17 5
PgDAC - отличный вариант... до сих пор мои проги на этих компонентах юзаются в Укртелекоме
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.03.2013, 22:01 6
Lord_Voodoo, в смысле "Devart PgDAC"?

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

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

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

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


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


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


Цитата Сообщение от adm1nspb Посмотреть сообщение
3. Если программа содержит меню, и ряд вызываемых из него форм, некоторые из которой использую БД,
Компоненты доступа к БД (TADOConnection напр) следует размещать на каждой такой форме, или есть более красивое решение?
Компонент TADOConnection в общем случае вообще должен быть один.
Насколько это "красиво" я не знаю, но есть DataModule, куда можно складировать все необходимые компоненты и при необходимости оттуда их вызывать.
0
2 / 2 / 2
Регистрация: 12.12.2011
Сообщений: 95
21.03.2013, 20:43  [ТС] 14
Я работаю под 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 15
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
13 / 13 / 3
Регистрация: 02.08.2012
Сообщений: 128
23.04.2013, 19:08 16
Помогите пожалуйста:

Установил последний 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 17
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, которые потом можно подгружать вот тут:

Embarcadero C++ Builder   и  PostgreeSQL


Файловые DSN представляются файлами с расширениями *.udl и *.dsn. Почитать про их формирование можно тут и тут соответственно.
1
13 / 13 / 3
Регистрация: 02.08.2012
Сообщений: 128
24.04.2013, 15:10 18
Самый простой способ - указать и менять в коде 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 19
ExeiLj,
Цитата Сообщение от ExeiLj Посмотреть сообщение
Самый простой способ
Эх... А про него-то я и забыл

Благодарю!

Действительно, на указанном выше сайте можно найти строки соединения для большинства СУБД.
0
0 / 0 / 0
Регистрация: 23.03.2021
Сообщений: 6
20.07.2021, 23:22 20
Lord_Voodoo, Максим Сергеевич, а PgDAC у вас как появился?
0
20.07.2021, 23:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.07.2021, 23:22
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru