2 / 2 / 2
Регистрация: 12.12.2011
Сообщений: 95
|
|
1 | |
Embarcadero C++ Builder и PostgreeSQL27.02.2013, 22:02. Показов 37829. Ответов 28
Метки нет (Все метки)
Добрый день!
Возникла необзодимость работы с PostgreeSQL на Embarcadero C++ Builder. Собстенно возник вопрос - с чего начать? Какие нужны компоненты и если можно - киньте ссылку на примеры работы с PostgreeSQL ..
0
|
27.02.2013, 22:02 | |
Ответы с готовыми решениями:
28
Embarcadero C++ Builder XE и AnsiString значения из БД Можно ли использовать C++ Builder v11 если купить Embarcadero C++Builder XE8 Как открыть проект C++Builder 6 в Embarcadero C++Builder 10.3 Community Edition? Руководство по C++ Builder X2 Embarcadero |
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
|
|
27.02.2013, 23:50 | 2 |
adm1nspb, здравствуйте!
Начать надо с установки СУБД и настройки драйвера ODBC для подключения к БД PostgreSQL через компоненты ADO. В частности, само соединение организуется стандартным образом посредством компоненты TADOConnection.
0
|
2 / 2 / 2
Регистрация: 12.12.2011
Сообщений: 95
|
|
04.03.2013, 18:13 [ТС] | 3 |
Установил 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,
Для справки: ODBC 32/64. Т.о., для создания источника данных в нашем случае необходимо запустить c:\Windows\SysWOW64\odbcad32.exe. Далее выбрать:
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 |
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 |
Тем не менее с подключением через 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,
Я работаю под XE2, собственно на него и ориентируюсь. Вся эта информация задается в "Пользовательском DSN". Данные по конкретным источникам данных хранятся в реестре. Автоматическое развертывание ODBC-коннектора, атакже создание и последующая настройка конкретного источника данных по этому коннектору. Компонент TADOConnection в общем случае вообще должен быть один. Насколько это "красиво" я не знаю, но есть DataModule, куда можно складировать все необходимые компоненты и при необходимости оттуда их вызывать.
0
|
2 / 2 / 2
Регистрация: 12.12.2011
Сообщений: 95
|
|
21.03.2013, 20:43 [ТС] | 14 |
А чем плох мой вариант? Есть основная форма, и несколько дополнительных. Есть несколько таблиц в БД, каждая из них содержит несколько полей (колонок). Если в основной форме я настраиваю TADOConnection, не могли бы вы более подробно рассказать как работать с БД в других формах? Например как вы говорите с помощью DataModule. Может есть примеры? ...Подключил форму DataModule к проекту. Разместил на ней TADOConnection и TadoTable
1
|
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
|
|
22.03.2013, 00:31 | 15 |
adm1nspb,
Выбирайте ANSI, поэкспериментируйте В ConnectionString Вы можете увидеть среди прочего опцию "Data Source". Именно она определяет какой именно источник данных использовать среди всего списка доступных DSN. При изменении содержимого (создании нового) конкретного DSN (данные по DSN хранятся в реестре) имя этого DSN не изменится (либо при создании его можно задать таким, какое оно определено в ConnectionString[Data Source]). Соответственно, приложение (ADOConnection) будет работать с этим самым DSN, которое мы изменили или создали. И работает оно по имени. Надеюсь, что стало немножечко понятнее На всякий случай приведите пример своей ConnectionString. Быть может Вы там сразу указываете информацию по коннекту с конкретной БД, минуя источник данных. Прежде чем я Вас направлю на Путь, давайте кое-что уточним. Планируется: 1) разворачивать приложение + СУБД PostgreSQL + БД + ODBC Connector; 2) разворачивать только приложение + ODBC Connector. Сама СУБД + БД располагаются отдельно (не на машине с приложением); 3) свой вариант (уточнить что именно планируется). ? Все правильно. Какие сложности возникли далее? Не по теме: 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 минут Всем спасибо, оказывается ндо запускать ИМЕННО из папки SysWOW64 и ниоткуда больше! Добавлено через 22 часа 53 минуты Еще вопрос возник: В данном случае с АДО приходится указывать БД, Сервер(Хост), Порт, SSL в самом драйвере. Можно ли это изменять как-то в самой программе?
1
|
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
|
|
23.04.2013, 22:21 | 17 |
ExeiLj,
Да, возможно. Вариантов множество. Вот некоторые из них: 1. Делать это напрямую через реестр, ибо информация об источниках данных (DSN) хранится именно там. 2. Использовать консольную тулзу odbcconf.exe, через которую также можно изменять DSN. Ну и сразу пару замечаний по поводу второго варианта: 2.1. 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-битные драйвера, выдавая ошибку: 3. Использовать файловые DSN, которые потом можно подгружать вот тут: Файловые DSN представляются файлами с расширениями *.udl и *.dsn. Почитать про их формирование можно тут и тут соответственно.
1
|
13 / 13 / 3
Регистрация: 02.08.2012
Сообщений: 128
|
||||||
24.04.2013, 15:10 | 18 | |||||
Самый простой способ - указать и менять в коде ADOConnection ConnectionString:
1
|
0 / 0 / 0
Регистрация: 23.03.2021
Сообщений: 6
|
|
20.07.2021, 23:22 | 20 |
Lord_Voodoo, Максим Сергеевич, а PgDAC у вас как появился?
0
|
20.07.2021, 23:22 | |
20.07.2021, 23:22 | |
Помогаю со студенческими работами здесь
20
Embarcadero 2010 C++ Builder Preview в Embarcadero® C++Builder 10.1 Berlin ListView в C++Builder XE7 (embarcadero) В Embarcadero C++ Builder не показывается подсказка по TTM_TRACKACTIVATE Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |