| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Компонент для C++ Builder 5 |
| Автор: Trash_s 13.8.2002, 22:31 |
| Подскажите, где можно найти компоненты для C++ Builder 5 для работы с DBF-файлами, не использующие BDE. |
| Автор: Alex101 13.8.2002, 23:01 |
| ADO, например, не использует BDE |
| Автор: Vyacheslav 14.8.2002, 01:04 |
| Бесплатные компоненты для dbf можно скачать с http://www.advantagedatabase.com Они поддерживают практически все возможные индексов(idx, ntx. cdx). Для скачивания надо заполнить регистрационную форму. |
| Автор: Trash_s 14.8.2002, 20:53 |
| Уточню, компоненты для доступа без BDE и без ADO, для непосредственного доступа. Извини, Вячеслав, но на Advantage Database Server ничего подходящего не нашел. Там есть TDataSet, но это не то или я не понял, по своей недалекости. Кстати, твой компонент по диалапу пока не использовал |
| Автор: Vit 14.8.2002, 22:04 |
| Посмотри на www.torry.net По крайней мере для Дельфи я видел несколько таких компонентов. |
| Автор: Vyacheslav 14.8.2002, 22:50 |
| Давай сначала разберемся с терминологией. BDE - это Borland Database Engine. - 32разрядный движок для доступа к базам данных. При желании с ним можно работать и напрямую через его API, но так сейчас никто не работает. Обычно работают через компоненты TTable, TQuery. Необходимым условием работоспособности является установка BDE на компе. TDataSet - это базовый класс VCL для доступа к базам данных и никакого отношения к BDE не имеет. Например TADODataSet тоже является производным от TDataSet, но c BDE не работает. Поэтому я не понимаю, почему ты так испугался, увидев там упоминание TDataSet. Теперь что предлагает Advantage : это native доступ к таблицам. Ни BDE ни ADO не используются. Для нормальной работы программы на другом компьютере нужно перенести еще два dll - файла. Вместо BDE используется Advantage Database Engine, в который входит ALS(Advantage Local Server, вместо него также может использоваться ARS -Advantage Remote Server или AIS - Advantage Internet Server - но это уже за отдельную плату) и ACE (Advantage Client Engine). C ACE можно работать в принципе напрямую через API, но удобнее работать через компоненты. В том интсталяторе, названном таким пугающим названием TDataSet, Advantage предоставляет целый набор компонентов: TAdsTable, TAdsQuery, TAdsConnection, TAdsSettings, TAdsStoredProc, TAdsDictinary. Кажется ничего не забыл. Естественно TAdsTable и TAdsQuery - порождены в конечном счете от TDataSet. На мой вгляд это как раз то что ты ищешь. Кроме того желательно скачать также ARC32 - эта программа выполняет примерно ту же роль что Enterprise Manager для MS SQL. |
| Автор: Trash_s 15.8.2002, 18:26 |
| Vyacheslav, спасибо за полезный экскурс в теорию. Но, на мой взгляд, использовать Advantage Database Engine как альтернативу BDE не необходимости. Наверно с ADE удобней работать, но зачем лишние "примочки". В данном случае самый удобный вариант это exe + dbf, в других случаях может быть по другому. Но замена BDE на ADE весьма сомнительна. С уважением, Trash_s. |
| Автор: Vyacheslav 15.8.2002, 20:49 |
| Под Database Engine понимается некий промежуточный уровень, состоящий из набора функций, которые обычно оформлены в виде одной или нескольких динамических библиотек. Они то и работают напрямую (возможно даже через файловую систему, если таблицы локальные) с БД. Так что любая уважающая фирма или программист при создании средств доступа прежде всего попытается создать такой набор функций (свой Database Engine), а уж затем вызовы этих функций обернет в компонент или класс. Так что если ты найдешь компоненты от других фирм, то там наверняка будет свой некий Database Engine. Так например в для работы с Apollo (еще один довольно известный набор компонентов для работы с dbf) также на компьютер нужно скачать дполнительные dll(кол-во не помню). Я его не называл, т.к не знал, откуда его можно скачать и к тому же он платный. Есть еще Hallcon(надеюсь название написал правильно: с ним мне даже работать не приходилось). Так что наличие Database Engine(даже если это называется по другому) в виде очень ограниченного числа dll(или bpl), которые нужно переносить на компьютер вместе с программой - это обычное дело. Если таких не окажется, то это сигнал к тому, что предмет программирования недостаточно был проработан, а следовательно возможны всякие глюки. С другой стороный использование зарекомендованных и поддерживаемых производителем профессиональных средств доступа к БД - это верный путь к успеху. Я сам довольно много работал с dbf форматом, используя в основном Apollo и Advantage в конце концов сделал выбор еще 1999 году в пользу Advantage(кстати тогда не только удаленный сервер, но и эти компоненты были платными и стоили более 300$) Позднее был приятно удивлен, что мой выбор подтвердили и другие разработчики Delphi(C++Builder), проголосовав дважды в 2001 и 2002 году за него, как за лучший движок для БД.
|
| Автор: Vyacheslav 15.8.2002, 23:28 | ||||
Почему не любят BDE - он устаревший (если не ошибаюсь основные принципы заложены в 1994 году, универсальный ( за универсальность надо платить), сложности при распространенни программ (простое копирование не работает, нужно писать инсталятор), тяжеловестность (не каждый программист тебе скажет сколько и какие файлы нужно переносить), необходимость мало мальского администрирования. Сам Borland отказывается от дальнейшей разработки BDE и предлагает альтернативный движок(опять Database Engine
Мне кажется тебя пугает терминология. Если так исходить, но в виндах даже такую систему как exe + file.txt невозможно (вернее очень трудно) построить. Все равно будешь вынужден обращаться не непосредственно к записи на диске, а опосредованно через API файловой системы. Просто эта прослойка не видна, т.к. встроена в операционку. Прослойки для работы c dbf в OS нет. Так что вопрос стоит в том , насколько будет тяжеловесна используемая прослойка между exe и dbf. Если требуется дополнительно скопировать два - три файла(Advantage,Apollo и т.д), это карман не утянет. Если для этого нужно инсталировать целую систему - это уже другой вопрос. |