请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

吾爱极客

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1638|回复: 0

在移动应用中使用FireDAC(iOS和Android)

[复制链接]

271

主题

271

帖子

1129

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1129
发表于 2015-10-31 01:46:01 | 显示全部楼层 |阅读模式
本教程描述了在移动设备上通过FireDAC框架将SQLite用作本地数据存储的基本步骤。
1.PNG


使用FireDAC来连接数据库

FireDAC是一套独特的通用数据访问控件,用来在Delphi和C++ Builder中开发跨设备应用。通过它的强大的通用架构, FireDAC允许Delphi本地直接高速访问InterBase, SQLite, MySQL, SQL Server,Oracle, PostgreSQL, IBM DB2, SQL Anywhere, Access, Firebird, Informix, 等等。
FireDAC本地驱动支持SQLite数据库3.0 和以上。

要在应用中使用SQLite,开发系统必须有sqlite3.dll文件。如果没有从http://www.sqlite.org/download.html 下载sqlite3.dll到系统路径(例如 C:\Windows\SysWOW64 ,对于 64-bit Windows).

设计和设置用户接口

创建一个新项目。选择 Multi-DeviceApplication.
1.   拖放一个 TFDConnection 控件到窗体。
2.   右击 TFDConnection 控件选择Connection Editor.
3.   在 FireDAC Connection Editor,设置 TFDConnection的下列参数:
     1.  设置 Driver ID 属性为 SQLite.
     2.   设置 Database 参数为:
          C:\Users\Public\Documents\Embarcadero\Studio\16.0\Samples\Data\Employees.s3db (数据库路径)
          在打开文件对话框中点击Open
          (要在打开对话框中显示Employees.s3db, 设置All Files (*.*) 过滤选项。)
          2.png
     3.   点击Test 按钮测试连接。
          3.png
     4.  点击OK 关闭。

4.   在ObjectInspector, 设置TFDConnection的以下属性:
     1.  设置 LoginPrompt 属性为False, 这样不会提示登录。
     2.  设置 Connected 属性为 True.


使用 LiveBindings 向导

使用 LiveBindings 向导 来添加 LiveBindings 控件(TBindSourceDB, TBindingsList), TFDQuery, 以及 TListView 控件。

添加 LiveBinding 控件
1.   选择 View > LiveBindings Designer 然后 LiveBindings Designer 打开。
2.    选择 LiveBindingsWizard。
4.png
3.   选择Create a data source 绑定任务。
4.   点击 Next 按钮。
5.   选择 FireDAC 类名字。
6.   点击 Next 按钮。
7.   修改 Command TypeQuery.
8.    设置 Command Text 属性为 select Name, Department, Seniority from Employee order by Department.
5.png
9.   点击 Test Command 按钮。
10.点击 Next
11.点击 Finish
到此, TBindSourceDB 和 TFDQuery 控件被添加到窗体。

添加 ListView 控件

1.   再次打开 LiveBindingsWizard.
2.    选择 Link a control with a field 绑定任务。
6.png
3.   点击Next 按钮。
4.   选择 TListView.
5.   点击Next 按钮。
6.   选择 BindSourceDB1.
7.   点击Next 按钮。
8.    选择 Name 字段名字。
7.png
9.   点击Next 按钮。
10.点击Finish 按钮关闭向导。


使用 LiveBindings 向导

使用 LiveBindings Designer 在 TBindSourceDB 和 TListView 控件之间添加连接。
1.   从TListView中选择 ItemHeader.Text 成员。
2.   用拖放的方法绑定到 BindSourceDB1 控件的Department 成员 (显示一条连接线)。
3.   从TListView中选择 Item.Text 成员。
4.   用拖放的方法绑定到 BindSourceDB1 控件的 Name 成员(显示一条连接线)。
5.   在Object Inspector, 设置 TListView的以下属性:
     1.   设置 ItemAppearance 为 ImageListItemRightButton
           在 LiveBindings Designer, TListView 应该多了一个新成员, Item.ButtonText
     2.  设置 Align 属性为 Client

6.   在 LiveBindings Designer, 从TListView中选择 Item.ButtonText 成员。
7.   用拖放的方法绑定到 BindSourceDB1 控件的Seniority 成员 (显示一条连接线).

准备运行应用

FireDAC 有一个松散耦合的多层结构,层提供服务。服务AP定义为COM 接口,然后其他层可以请求使用接口工厂。
为了正确的操作FireDAC, 必须链接IFDGUIxWaitCursorIFDPhysDriver 接口实现到应用。
为此,拖放一个TFDGUIxWaitCursorTFDPhysSQLiteDriverLink 控件到窗体。

设置数据库移动平台发布

直到这里,只在桌面上使用了SQLite。这意味着实际的数据库是处于本地硬盘上的。(例如, C:\Users\Public\Documents\Embarcadero\Studio\16.0\Samples\Data\Employees.s3db).在移动设备上, 应用是被置于沙盒的,一般只能读写应用目录下的Documents目录 ( iOS 设备) 和 internal 存储(Android 设备) 的数据。
要连接到手机上的本地数据库,需要完成以下操作:

§  分发数据库到移动设备。
§  修改配置(来连接到数据库文件) 到ocuments 目录 (iOS设备) 或 internal 存储(Android设备)下面的本地文件。

Deployment Manager中添加和配置数据库文件

在应用能够在移动设备运行之前, 需要设置数据库文件的发布(Employees.s3db).
1.   打开 DeploymentManager (选择Project > Deployment
2.    选择 Add Files 之后选择数据库文件 (例如, C:\Users\Public\Documents\Embarcadero\Studio\16.0\Samples\Data\Employees.s3db).
8.png
3.    选择 Employees.s3db, 修改 Remote PathStartUp\Documents\ (iOS平台) 或 assets\internal\ (Android平台).
iOS设备平台上的RemotePath
9.png
Android设备平台上的RemotePath
10.png
4.   选择Platforms 列(双击Employees.s3db行的省略号[...]):
     1.  确认Employees.s3db有 iOSSimulator, iOSDevice32iOSDevice64Android
     2.  列表中如果有Win32则将其删除(不需要拷贝数据库文件到Win32平台).

5.   选择 All-Configurations - iOS Device - 32 bitplatform, All-Configurations - iOS Device - 64 bitplatformAll-Configurations - Android platform ,确认 Employees.s3db 被设置发布到StartUp\Documents\assets\internal\
就像刚配置的,当在移动设备运行应用时,数据库文件 (Employees.s3db) 被设置部署到Documents 目录 (iOS平台) 或 internal 存储 (Android 平台),位于应用的沙盒区域中。

修改代码连接移动设备的本地数据库

应用的基本功能完成了。应用用到的创建于Windows的数据库文件还不可用,除非你把它拷贝到移动设备或在运行时创建之。

指定移动设备的SQLite 数据库路径

1.   在 Form Designer, 选择 FDConnection1 控件。
2.   在 ObjectInspector, 双击 BeforeConnect 事件。
3.   添加以下代码到事件函数:

Delphi:
procedure TForm1.FDConnection1BeforeConnect(Sender: TObject);
begin
  FDConnection1.Params.Values['Database' := TPath.Combine(TPath.GetDocumentsPath, 'Employees.s3db');
end;
TPath 记录在System.IOUtils 单元中定义,因此代码单元需要包含System.IOUtils

C++ (仅 iOS):

void __fastcall TForm1::FDConnection1BeforeConnect(TObject *Sender)
{
          FDConnection1->Params->Values["ColumnMetadataSupported" = "False";
          FDConnection1->Params->Values["Database" = System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetDocumentsPath(), "Employees.s3db");

}

TPath 记录在System.IOUtils 库中定义,因此需要在头文件中包含 #include <System.IOUtils.hpp>
在模拟器或移动设备上运行应用

现在可以运行应用了(选择 Run >Run).
11.PNG


www.52jike.com (吾爱极客)  ruanzhuo翻译整理,转载请注明出处




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|吾爱极客 ( 粤ICP备15067754号-1  

GMT+8, 2018-6-25 17:47 , Processed in 0.146805 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表