На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела C/C++: Базы данных
Модераторы: B.V.
  
    > Нужна библиотека для работы с dbf
      Всем добрый день/вечер.

      Появилась задача работы с файлами dbf из программы на C/C++.
      Читать, писать, одновременный доступ, индексы.
      Т.е. функционал аналогичный dBase, Clipper, Foxpro, если кто то помнит такие системы.
      Требуется библиотека типа CodeBase или подобная.
      Поиски не дали результатов (как правило ссылки старые).
      Может кто нибудь что нибудь посоветовать?
      Буду очень благодарен.
        Стандарт описан давно в чем проблема?
          Стандарт чего?
          Имеете ввиду структура dbf-файла?
          Я говорю про библиотеку работы с dbf/idx/cdx.
          Работу с совмесным доступом и блокировками, с set relation и т.п.
          Это не тривиальная задача которая выходит далеко за рамки открыть dbf. прочитать заголовок и найти/записать данные.
          Объем работ по созданию такой библиотеки существенно больше чем стоящая передо мной сейчас задача.
          Поэтому ищу готовую библиотеку.
          Сообщение отредактировано: ms1 -
            ms1, не уверен, что все это есть для твоих задач. Технология старая и тупиковая.
            Если по существу - смотреть в сторону ODBC, типа "Microsoft Access Database Engine 2010 Redistributable" для винды, или купить кросс-платформенную софтину типа "Progress". Но мой совет - уходить от этого нужно срочно в сторону клиент-серверов. Благо конвертеров данных пруд пруди.
              JoeUser, спасибо за ответ.
              Есть точно. По крайней мере раньше была такая библиотека, CodeBase, в исходниках. Весьма достойная.
              Сейчас у меня ее нет, да я и не уверен что ее будет легко скомпилировать под Win.
              Было что то еще, но не помню уже.
              ODBC пока не хочется, хотелось бы чтот легкое - статически или динамически компонуемая библиотека, либо исходники из которых ее можно собрать.
              Технология старая, согласен.
              Тупиковая не соглашусь, единственно может только из за той же старости, скорее уже "не модная", но речь не об этом.
              Заменить на чтото другое нельзя. Надо работать с существующей БД совместно с уже написанной большой системой.
              Поэтому никакакие другие варианты невозможны. По крайней мере на текущем этапе.
                Цитата ms1 @
                Тупиковая не соглашусь, единственно может только из за той же старости, скорее уже "не модная", но речь не об этом.

                Нет. Именно тупиковая. Простой пример - 1С 7.7 с файловым доступом. Более менее приличная база, и все, более 5-7 рабочих станций общую производительность вгоняют в ступор. Из-за избыточности перегоняемых данных по сети. Приходится городить терминальные сеансы. Вывод - от многопользовательского сетевого файлового доступа нужно избавляться. Будь то DBase, Paradox, Btrieve ... Не суть.

                Ну, а коль уже существует некоторая большая система, я бы задумался о том, чтобы на месте хранения файлов БД разработать и поднять тонкого клиента, и уже с ним налаживать взаимодействие по сети. А тонкий клиент пусть работает по ODBC. Чисто ИМХО.
                  Цитата JoeUser @
                  Более менее приличная база, и все, более 5-7 рабочих станций общую производительность вгоняют в ступор.

                  Я бы даже сказал 3-5 клиентов.
                  И проблема не только и даже не столько в скорости и загрузке сети, сколько в том, что при сбое на стороне одного из клиентов в процессе изменения таблицы эта таблица портится. Чем больше клиентов, тем больше вероятность того что ктонибудь из них зависнет/у него отрубят питание и т.п. Поэтому (мое мнение естественно) не "тупиковая", а не применимая в задачах у которых более 5 пользователей.
                  Понятно про масштабируемость, понятно что всегда "потом захочется большего", но еще раз повторю, вопрос стоит не в принципе построения системы.
                  Этот вопрос не в моей власти.

                  Еще насчет тупиковости: dbf неплохо применима как локальная база одного приложения на одном компьютере, возможно с совместным доступом из разных потоков или разных экземпляров программы.
                    Цитата ms1 @
                    dbf неплохо применима как локальная база одного приложения на одном компьютере

                    SQLite 3 еще более неплохо, на порядок.
                      Согласен. Более того, первоначально хотел сформулировать эту фразу примерно как:
                      "dbf неплохо применима как локальная база одного приложения на одном компьютере, впрочем теперь есть еще sqlite" :)

                      Однако мы отвлеклись от темы.

                      Попрежнему прошу откликнуться тех кто может дать рабочую ссылку на библиотеку работы с dbf.
                        Есть библиотеки для C++Borlad подойдут ли для С++ не знаю.
                        PS idx уже давно никто не использует кроме FoxPro.
                          xbase не подходит? https://sourceforge.net/projects/xdb/
                            Цитата Bas @
                            Есть библиотеки для C++Borlad подойдут ли для С++ не знаю.

                            Эти библиотеки в исходниках?
                            Ссылочку можно?

                            Цитата Олег М @
                            xbase не подходит? https://sourceforge.net/projects/xdb/

                            Очень большое спасибо. Посмотрю.
                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                            0 пользователей:


                            Рейтинг@Mail.ru
                            [ Script execution time: 0,0293 ]   [ 16 queries used ]   [ Generated: 28.03.24, 09:46 GMT ]