Delphi: переход с BDE на DBExpress - PullRequest
       50

Delphi: переход с BDE на DBExpress

1 голос
/ 06 февраля 2012

Я пытаюсь перенести приложение Delphi, используя BDE, с файлами данных DBF / MDX, в DBExpress, используя локальные файлы данных.

Простая замена компонентов TTable на TClientDataset привела к ошибкам, связанным со свойствами индекса.

Я погуглил это, и все, что я придумал, это статья доктора Боба, в которой не упоминаются индексы, ине демонстрирует, как использовать метод сортировки.Все остальные статьи были общими описаниями DBExpress без подробностей, относящихся ко мне.

Есть ли какие-нибудь учебные пособия / примеры шагов, которым нужно следовать?

Ответы [ 3 ]

1 голос
/ 06 февраля 2012

К сожалению, локальные файлы TClientDataset не являются заменой BDE в качестве ядра локальной базы данных.В основном это наборы данных в памяти с возможностью сохранения данных на диске.Но им не хватает многих функций, которые вы можете найти в BDE.Если ваши потребности минимальны, они могут работать (вы можете определить индексы в свойстве TIndexDefs набора данных клиента), но они могут быть не тем, что вам нужно.

Более того, TClientDataset не является компонентом, связанным с dbExpress.Они фактически были представлены с MIDAS (позже переименованным в Datasnap) в качестве клиентского (отсюда и название) аналога удаленного набора данных в многоуровневом приложении (возможность дискового хранилища позволяет выполнять отключенные операции).

dbExpress - это данныеуровень доступа, который может работать с различными серверами баз данных через «драйверы», как это делают ODBC / BDE / OLEDB.Было решено использовать только однонаправленные наборы данных в dbExpress, повторно используя возможности кэширования / курсора уже существующего TClientDataset для обеспечения двунаправленного курсора и кэша.Если вы используете только TClientDataset, вы вообще не используете dbExpress, и TClientDataset может работать с любым набором данных, реализующим необходимые интерфейсы (включая BDE).

Вам следует рассмотреть альтернативы, такие как SQLite, Firebird (есть «встроенная» версия, если вам нужен только локальный доступ), или Postgres, если вы ищете небольшие и бесплатные движки (MySQL бесплатен, только если ваше приложение под GPL), или есть несколько других движков, доступных из урезанных версийкоммерческие (например, SQL Server Express и Oracle Express) или относительно дешевые.

1 голос
/ 06 февраля 2012

IMHO, TTable и TClientDataSet - это очень разные методы доступа к данным. Я предложу 2 пути миграции:

  1. Как вы сказали о DBF / MDX, обратите внимание на базу данных Advantage и TAdsTable. Вы найдете его более совместимым с TTable, чем с TClientDataSet и dbExpress.
  2. Рассмотрим Anydac и его TADTable в качестве пути миграции. TADTable выглядит как совместимая и более быстрая замена TTable, в дополнение к другим функциям Anydac.
0 голосов
/ 07 февраля 2012

Есть причина, по которой вы не можете найти людей, которые делают это;это не просто плохая идея, это, вероятно, почти невозможно.

Я хотел бы предложить вам отказаться от идеи использования ClientDataSet, поскольку ее не следует считать «единственной базой данных, которая вам когда-либо понадобится»и подумайте об использовании IBObjects [коммерческий!] плюс Firebird [free], или dbExpress + поддерживаемые компоненты SQL Db, или Interbase Express (IBX), которые поставляются с Delphi.

Вы обнаружите, что вам либо нуженполные реляционные базы данных SQL, даже очень маленькие или легкие, для замены BDE и даже набора функций, который вы, возможно, использовали для таблиц dBase, Access или Paradox.

В этом случае, тогда обычные учебные пособия идеально подходят для вашей ситуации.

...