使用UniDAC在Delphi XE4中开发iOS应用
核心提示:Delphi XE4的发布让很多Delphi开发者欣喜若狂,毫无疑问它使得Delphi开发更简单且更容易被理解,而且让开发无论是iPhone、iPad还是iPod的iOS平台的应用成为可能。但是对于iOS的应用程序部署到iOS设备上有一个相当严重的限制:不允许与应用程序一起部署任何库(*.dylib...
Delphi XE4的发布让很多Delphi开发者欣喜若狂,毫无疑问它使得Delphi开发更简单且更容易被理解,而且让开发无论是iPhone、iPad还是iPod的iOS平台的应用成为可能。但是对于iOS的应用程序部署到iOS设备上有一个相当严重的限制:不允许与应用程序一起部署任何库(*.dylib)。在你开发需要数据库配合工作的应用程序之前,每个开发者都知道,要让应用程序连接数据库,要么在客户端安装数据库,要么就是需要一个允许连接到数据库的库,但是这个限制意味着,如果要在iOS平台上创建必须使用数据库的业务类的应用程序,只有通过控件来实现了。
Devart就提供了相应的数据库连接控件,支持连接几乎所有的流行数据库,不需要安装客户端软件,也不需要库。所以iOS的库(*.dylib)部署限制将不适用于使用UniDAC开发的应用程序。现阶段Devart数据库连接控件支持的访问的数据库有:
SQLite
Oracle
MySQL
PostgreSQL
InterBase ToGo
UniDAC支持同时连接访问以上所有数据库,当然Devart也提供分别访问以上单独数据库的相应控件,如LiteDAC、MyDAC等。
直接数据访问或DataSnap
在数用数据库时,我们一般面临一个宣传:直接数据访问或使用DataSnap。
使用DataSnap的方法经常被介绍,但是由于使用DataSnap方法需要消耗大量的资源,我们认为现在移动设备的电池硬件性能,还达不到使用DataSnap方法的要求,固为了让你开发的iOS应用程序发挥最大的性能,我们建议使用直连数据的方法。
iOS应用连接数据库
UniDAC在移动应用开发中的使用方式,和在普通桌面应用的方式类似,首选需要将TUniConnection、TUniQuery和其他必要控件放到窗体中。接下来的步骤将会根据需要连接的数据库不同而有所不同。
SQLite
由于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
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的设置方式也类似,在此就不累述了。
部署数据库到iOS
应用程序如果要与本地数据库连接的话,就必须进行部署,方法很简单,使用Project->Deployment:
连接数据库到文件列表后,进行部署到iOS设备就行了。
来源:oschina
链接:https://my.oschina.net/u/582827/blog/271399