首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi FireDAC 實戰:獲取 SQLite 資料庫基本資訊完整指南

     編輯:Delphi

在 Delphi 開發中,FireDAC 提供了強大且統一的資料庫存取架構。本文將詳細示範如何使用 FireDAC 連接 SQLite 資料庫,並獲取連接資訊、資料表清單、欄位定義以及實際資料等核心中繼資料。

核心元件配置

在空白表單上放置以下核心元件:

  • TFDConnection:資料庫連接元件
  • TFDPhysSQLiteDriverLink:SQLite 驅動連結器
  • TFDGUIxWaitCursor:GUI 等待游標管理
  • TMemo:用於顯示查詢結果

完整程式碼實作

procedure TForm1.FormCreate(Sender: TObject); 
var 
  List: TStrings; 
  V: Variant; 
begin 
  // 開啟 SQLite 資料庫連接
  FDConnection1.Open('DriverID=SQLite; Database=C:\Temp\FDDemo.sdb'); 
  
  List := TStringList.Create; 
  try
    // 1. 獲取完整連接資訊報表
    FDConnection1.GetInfoReport(List); 
    Memo1.Clear; 
    Memo1.Lines.Add('==> 獲取連接資訊:'); 
    Memo1.Lines.AddStrings(List); 
    
    // 2. 獲取所有資料表名稱
    FDConnection1.GetTableNames('', '', '', List); 
    Memo1.Lines.Add(#13#10'==> 獲取資料庫中的資料表名稱清單:'); 
    Memo1.Lines.AddStrings(List); 
    
    // 3. 獲取所有檢視表名稱
    FDConnection1.GetTableNames('', '', '', List, [], [tkView]); 
    Memo1.Lines.Add(#13#10'==> 獲取資料庫中的檢視表名稱清單:'); 
    Memo1.Lines.AddStrings(List); 
    
    // 4. 獲取指定資料表的欄位名稱
    FDConnection1.GetFieldNames('', '', 'Orders', '', List); 
    Memo1.Lines.Add(#13#10'==> 獲取 Orders 資料表中的欄位名稱清單:'); 
    Memo1.Lines.AddStrings(List); 
    
    // 5. 透過中繼資料介面獲取第一筆實際資料
    V := FDConnection1.ConnectionMetaDataIntf.GetTables([], [tkTable], '', '', '').Rows[0].GetData(0); 
    Memo1.Lines.Add(#13#10'==> 獲取第一個資料表中第一列的第一筆資料:'); 
    Memo1.Lines.Add(V); 
  finally
    List.Free; 
  end; 
end;

執行結果解析

程式執行後將輸出類似以下的詳細資訊:

{結果如下:}
{...............................................................
==> 獲取連接資訊:
================================
Connection definition parameters
================================
Name=Unnamed
DriverID=SQLite
Database=C:\Temp\FDDemo.sdb
================================
FireDAC info
================================
Tool = RAD Studio XE6
FireDAC = 10.0.1 (Build 69712)
Platform = Windows 32 bit
Defines = FireDAC_NOLOCALE_META;FireDAC_MONITOR
================================
Client info
================================
Loading driver SQLite ...
DLL = 
Client version = 3.8.3.1
Compile options = ENABLE_COLUMN_METADATA;ENABLE_FTS3;
 ENABLE_FTS3_PARENTHESIS;ENABLE_FTS4;ENABLE_RTREE;
 ENABLE_STAT4;HAS_CODEC;OMIT_AUTOINIT;
 OMIT_DEPRECATED;SYSTEM_MALLOC;TEMP_STORE=2;
 THREADSAFE=2
================================
Session info
================================
Current catalog = 
Current schema = 
Total changes = 0
Database encoding = UTF8
Encryption mode = 
Cache size = 10000
==> 獲取資料庫中的資料表名稱清單:
Categories
CustomerCustomerDemo
CustomerDemographics
Customers
Employees
EmployeeTerritories
FDQA_all_types
... (更多資料表)
Orders
Products
Region
Shippers
Suppliers
Territories
==> 獲取資料庫中的檢視表名稱清單:
FDQA_V_Test
==> 獲取 Orders 資料表中的欄位名稱清單:
OrderID
CustomerID
EmployeeID
OrderDate
RequiredDate
ShippedDate
ShipVia
Freight
ShipName
ShipAddress
ShipCity
ShipRegion
ShipPostalCode
ShipCountry
==> 獲取第一個資料表中第一列的第一筆資料:
1
...............................................................}

FireDAC SQLite 核心單元架構

FireDAC 為 SQLite 提供了四層封裝架構,由底層至上層分別為:

  • FireDAC.Phys.SQLiteCli:最底層 API 封裝,可像 C 語言一樣直接呼叫 SQLite C API
  • FireDAC.Phys.SQLiteWrapper:主要功能封裝層,提供 C++ 風格的物件導向操作,是進階開發常用層
  • FireDAC.Phys.SQLiteMeta:中繼資料專用封裝層
  • FireDAC.Phys.SQLite:實作 FireDAC 統一介面層,提供標準 FireDAC 操作方式,也是最簡單、最推薦的使用方式

進階應用:直接存取 TSQLiteDatabase

透過 FireDAC.Phys.SQLiteWrapper 單元提供的 TSQLiteDatabase 類別,可直接存取 SQLite 底層特性。該類別無需手動建立,可直接從連接元件轉換取得:

uses FireDAC.Phys.SQLiteWrapper;

procedure TForm1.Button1Click(Sender: TObject);
var
  db: TSQLiteDatabase;
begin
  // 假設 FDConnection1 已成功連接
  db := TSQLiteDatabase(FDConnection1.CliObj); 
  ShowMessage(db.CharacterSet); // 輸出: UTF8
end;

這種方式讓開發者在需要時能突破 FireDAC 統一介面的限制,直接存取 SQLite 特有功能,同時保持程式碼的可維護性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved