2019/11/04

單機資料庫連結方式如何選擇,以SQLite為例

在描述選擇Delphi CE有什麼優缺點後,接下來就是要如何選擇資料庫的連結技術。

目前Delphi CE提供了ADO、dbExpress(DBX)和FireDAC資料庫連結技術,ADO它沒有壞掉,效能也好,在沒有跨平台需求用它就可以了。

DBX和FireDAC,這個比較難選,先來看看它們的差異:
單機版最常用的兩款資料庫:Access和SQLite在FireDAC上都有提供,但DBX只提供SQLite的連結方式。

而SQLite和MS Access相比下又有幾個優點:
  • 小巧輕巧
  • 速度快
  • 跨平台

以實際操作來比較DBX和FireDAC的差別。

首先利用自己做的Dbexpress.SQLite.Factory建立資料庫和資料表格:
建立比操作輕鬆太多。(笑)


使用DBX連結資料表:

  1. 從Palette容器裡拖拉一個TSQLConnection到TForm中,並且設定好SQLite的連線參數。
  2. 從Palette容器裡拖拉一個TSQLDataSet到TForm中,在CommandText屬性輸入『SELECT * FROM biolife』。
  3. 對TSQLDataSet按右鍵,選『Fields Editor』,並對跳出的編輯器按右鍵,選『Add all fields』
上述步驟完成後,會得到以下結果:
    SQLDataSet1species_no: TWideMemoField;
    SQLDataSet1category: TWideMemoField;
    SQLDataSet1common_name: TWideMemoField;
    SQLDataSet1species_name: TWideMemoField;
    SQLDataSet1length_cm: TWideMemoField;
    SQLDataSet1length_in: TWideMemoField;
    SQLDataSet1notes: TWideMemoField;
    SQLDataSet1graphic: TWideMemoField;
表格內有 real, text, blob 型別,但轉換後全是 TWideMemoField,有點奇怪,來看看FireDAC會不會有所變化。

使用FireDAC連結資料表:


  1. 從Palette容器裡拖拉一個TFDPhysSQLiteDriverLink到TForm中。
  2. 從Palette容器裡拖拉一個TFDConnection到TForm中,並且設定好SQLite的連線參數。
  3. 從Palette容器裡拖拉一個TFDQuery到TForm中,在SQL屬性輸入『SELECT * FROM biolife』。
  4. 對TFDQuery按右鍵,選『Fields Editor』,並對跳出的編輯器按右鍵,選『Add all fields』
上述步驟完成後,會得到以下結果:
    FDQuery1species_no: TFloatField;
    FDQuery1category: TWideMemoField;
    FDQuery1common_name: TWideMemoField;
    FDQuery1species_name: TWideMemoField;
    FDQuery1length_cm: TFloatField;
    FDQuery1length_in: TFloatField;
    FDQuery1notes: TWideMemoField;
    FDQuery1graphic: TBlobField;
FireDAC可以正確的取得SQLite資料表各欄位格式。

結論


由上面的資料顯示,若使用SQLite單機資料庫,會是以FireDAC表現會比較好。

DBX Driver官方目前已不會有大幅度的功能更新,所以SQLite控制上不會比FireDAC來得好,建議有使用SQLite需求,應採用FireDAC。

沒有留言:

張貼留言