核心提示:Delphi XE4的發佈讓不少Delphi開發者欣喜若狂,毫無疑問它使得Delphi開發更簡單且更容易被理解,並且讓開發不管是iPhone、iPad仍是iPod的iOS平臺的應用成爲可能。可是對於iOS的應用程序部署到iOS設備上有一個至關嚴重的限制:不容許與應用程序一塊兒部署任何庫(*.dylib...sql
Delphi XE4的發佈讓不少Delphi開發者欣喜若狂,毫無疑問它使得Delphi開發更簡單且更容易被理解,並且讓開發不管是iPhone、iPad仍是iPod的iOS平臺的應用成爲可能。可是對於iOS的應用程序部署到iOS設備上有一個至關嚴重的限制:不容許與應用程序一塊兒部署任何庫(*.dylib)。在你開發須要數據庫配合工做的應用程序以前,每一個開發者都知道,要讓應用程序鏈接數據庫,要麼在客戶端安裝數據庫,要麼就是須要一個容許鏈接到數據庫的庫,可是這個限制意味着,若是要在iOS平臺上建立必須使用數據庫的業務類的應用程序,只有經過控件來實現了。數據庫
Devart就提供了相應的數據庫鏈接控件,支持鏈接幾乎全部的流行數據庫,不須要安裝客戶端軟件,也不須要庫。因此iOS的庫(*.dylib)部署限制將不適用於使用UniDAC開發的應用程序。現階段Devart數據庫鏈接控件支持的訪問的數據庫有:服務器
SQLiteide
Oracle性能
MySQLspa
PostgreSQLcode
InterBase ToGoorm
UniDAC支持同時鏈接訪問以上全部數據庫,固然Devart也提供分別訪問以上單獨數據庫的相應控件,如LiteDAC、MyDAC等。移動應用開發
在數用數據庫時,咱們通常面臨一個宣傳:直接數據訪問或使用DataSnap。server
使用DataSnap的方法常常被介紹,可是因爲使用DataSnap方法須要消耗大量的資源,咱們認爲如今移動設備的電池硬件性能,還達不到使用DataSnap方法的要求,固爲了讓你開發的iOS應用程序發揮最大的性能,咱們建議使用直連數據的方法。
UniDAC在移動應用開發中的使用方式,和在普通桌面應用的方式相似,首選須要將TUniConnection、TUniQuery和其餘必要控件放到窗體中。接下來的步驟將會根據須要鏈接的數據庫不一樣而有所不一樣。
因爲SQLite是一個本地數據庫,因此 不須要主機和端口,只須要指定數據庫,硬盤驅動器上的數據庫文件路徑。
DocumentPath := TPath.GetDocumentsPath;
若是應用第一次啓動時,還須要檢測是否SQLite數據庫存在於iOS設備上,用如下設置:
UniConnection.SpecificOptions.Values['ForceCreateDatabase'] := 'True';
接下來最重要的,用如下代碼制定Provider:
var UniConnection: TUniConnection; begin UniConnection := TUniConnection.Create(nil); try UniConnection.ProviderName := 'SQLite'; UniConnection.SpecificOptions.Values['ForceCreateDatabase'] := 'True'; UniConnection.Database := IncludeTrailingPathDelimiter(TPath.GetDocumentsPath) + 'db.sqlite3'; try UniConnection.Connect; except on E: Exception do ShowMessage(E.Message); end; finally UniConnection.Free; end; end;
Oracle的鏈接方式以下:
UniConnection.SpecificOptions.Values['Direct'] := 'True';
Oracle須要明顯的服務器的主機和端口,以及其SID或Service Name。須要使用如下方式設置:
UniConnection.Server := 'Host:Port:sid=SID';
而後就是指定provider了:
var UniConnection: TUniConnection; begin UniConnection := TUniConnection.Create(nil); try UniConnection.ProviderName := 'Oracle'; UniConnection.SpecificOptions.Values['Direct'] := 'True'; UniConnection.Server := 'server:1521:orcl'; UniConnection.Username := 'user_name'; UniConnection.Password := 'password'; try UniConnection.Connect; except on E: Exception do ShowMessage(E.Message); end; finally UniConnection.Free; end; end;
MySQL、PostgreSQL的設置方式也相似,在此就不累述了。
應用程序若是要與本地數據庫鏈接的話,就必須進行部署,方法很簡單,使用Project->Deployment:
鏈接數據庫到文件列表後,進行部署到iOS設備就好了。