2012-02-06 60 views
1

我試圖將使用BDE和DBF/MDX數據文件的Delphi應用程序遷移到使用本地數據文件的DBExpress。德爾福:從BDE遷移到DBExpress教程

簡單地用TClientDataset替換TTable組件導致涉及索引屬性的錯誤。

我使用谷歌搜索,所有我想出的是由博士博士沒有提及索引的文章,並沒有演示如何使用排序方法。所有其他文章都是DBExpress的一般描述,沒有與我相關的細節。

是否有任何教程/要遵循的步驟示例?

+1

你的具體問題沒有道理。你爲什麼用ClientDataSet替換TTable?詳細說明你正在努力完成什麼?你認爲TClientDataSet是做一切組件來取代TTable嗎?你希望TClientDataSet能做你想做的一切嗎?沒人能猜到你想要的東西。也許是代碼示例?你使用BDE和dBase文件?請清楚。 – 2012-02-06 15:08:32

+0

我寫了一系列有關將BDE應用程序轉換爲dbExpress/Firebird的博客文章。您可能需要查看以下條目:http://nbnewman.blogspot.com/2009/09/using-dbexpress-conclusions.html – 2012-02-07 06:46:57

+0

幾年前,我爲Code Rage III的BDE遷移做了一個視頻http:// learndelphi .tv/index.php?option = com_content&view = article&id = 79 – Alister 2013-01-27 22:55:52

回答

1

恕我直言,TTable和TClientDataSet是非常不同的數據訪問方法。我會建議2個遷移路徑:

  1. 正如您所說的關於DBF/MDX,請注意Advantage Database和TAdsTable。你會發現它比TClientDataSet和dbExpress更兼容TTable。
  2. 考慮將Anydac及其TADTable作爲遷移路徑。除了其他Anydac功能外,TADTable看起來是兼容且更快速的TTable替換品。
+0

此應用程序由非營利組織使用。我寧願使用免費的數據庫。 – ChuckO 2012-02-06 15:55:17

+0

你可以使用免費的數據庫 - Firebird,PostgreSQL,SQLite,SQL Server Express等使用Anydac(商業) – GeorgeJ 2012-02-06 16:02:37

1

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)或相對便宜的版本中獲得。

+0

這些替代方案之間的功能是否有任何比較? – ChuckO 2012-02-06 15:56:57

+0

你可以從這裏開始:http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems,但你應該尋找最適合你需求的。 – 2012-02-06 22:05:46

0

有一個原因,你找不到這樣做的人;這不僅僅是一個壞主意,它可能幾乎是不可能的。

我想建議你放棄使用ClientDataSet的想法,因爲它不被認爲是「唯一需要的數據庫」,並且考慮使用IBObjects [商業!]加上Firebird [免費],或dbExpress +支持的SQL Db或Delphi附帶的Interbase Express(IBX)組件。

你會發現你需要一個完整的關係SQL dbms,甚至是一個很小或者很小的dbms來替換BDE,甚至你可能習慣的dBase,Access或Paradox表的特性集。

在這種情況下,那麼usual tutorials完全適用於您的情況。

相關問題