移动教程:使用InterBase ToGo和FireDAC(iOS和Android)

来自RAD Studio
跳转到:航行,搜索

转到移动教程:移动应用程序开发(iOS和Android)


在开始本教程之前,您应该阅读并执行以下教程会话:

提示:要学习本教程,您需要一个许可证对于IBToGo公司IB岩:
  • 如果您购买了以下RAD Studio版本之一,您将在电子邮件中收到IBLite无限开发和部署许可证的密钥:
    • 雅典RAD工作室专业或以上 所有版本
    • Delphi Athens Professional或更高版本,带手机
  • 如果您是试用用户,那么您的安装包括IBToGo的试用许可证。您可以在部署步骤中选择测试许可证,在iOS和Android上测试InterBase,如本教程所述。试用许可证随试用产品一起安装,位于C: \Users\Public\Documents\Embarcadero\InterBase\redist\InterBase2020.
按照中的步骤操作IBSite和IBToGo部署许可以获取并安装许可证文件。
注:在Android设备上,InterBase ToGo应用程序需要特定的权限待设置,具体为:
  • 读取外部存储器(数据库放在外部内存中)
  • 写入外部存储器(数据库放在外部内存中)
  • 互联网(您需要连接到远程服务器)

本教程描述浏览由管理的数据的基本步骤InterBase目标通过FireDAC框架在iOS和Android设备上运行。

网间网操作系统 安卓

DBDemo iPod Runtime.png

数据库演示运行时.png

注:您可以使用FireDAC、dbExpress和Interbase Express(IBX)组件来构建Interbase ToGo应用。有关Interbase Express组件在Delphi应用程序中使用的详细讨论,请阅读InterBase Express入门文章。对于本教程,我们将连接到Interbase ToGo使用FireDAC。

使用FireDAC连接到数据库

FireDAC是一组独特的通用数据访问组件用于为Delphi和C++Builder开发跨平台数据库应用程序。凭借其强大的通用体系结构,FireDAC支持从Delphi到InterBase、SQLite、MySQL、SQL Server、Oracle、PostgreSQL、IBM DB2、SQL Anywhere、access、Firebird、Informix等的本地高速直接访问。

  • 对于移动平台,消防DAC支架InterBase目标以及数据库。这些数据库产品可以在iOS和Android设备上运行。
  • 对于其他数据库(如Oracle),您至少需要一个客户端库。在Windows平台上,客户端库作为DLL提供以进行连接。因此,您需要使用中间层技术(如DataSnap)开发应用程序,以便从移动设备连接到这些数据库产品。
另一个教程讨论了如何在不使用移动设备上的客户端库的情况下连接到企业数据库;看见移动教程:从移动客户端(iOS和Android)连接到企业数据库.

设计和设置用户界面

本教程使用T列表视图T面板组件作为UI元素。

要设置ListView和Panel组件,请使用以下步骤:

  1. 创建HD多设备应用程序,选择以下选项之一:
    • 文件>新建>多设备应用程序-Delphi>空白应用程序
    • 文件>新建>多设备应用程序-C++Builder>空白应用程序
  2. 删除一个T列表视图组件。
  3. 对象检查器,设置ListView的以下属性:
    • 设置排列属性到顾客,以便ListView组件使用整个表单。
    • 设置项目外观列表项右侧详细信息.
    • 设置搜索可见真的.
  4. 添加T面板组件,并在对象检查器中设置以下属性:
    • 设置排列属性T面板组件到顶部.
  5. 添加T标签组件,并在对象检查器中设置以下属性:

连接到数据

以下是使用FireDAC连接到数据库中数据的基本步骤:

  1. 工具选项板,双击TFD连接组件。
    FDConnectionComp.png格式
  2. 右键单击TFD连接组件并选择连接编辑器.
  3. 在FireDAC连接编辑器中,设置TFD连接:
    1. 设置驱动程序ID属性到IB公司.
    2. 设置数据库参数设置为:
      C: \Users\Public\Documents\Embarcadero\Studio\23.0\Samples\Data\dbdemos.gdb(数据库的位置)
      然后单击正常开放在“文件打开”对话框中。
    3. 设置用户名(_N)参数到系统数据库.
    4. 设置密码参数到法宝.
    5. 设置协议参数到TCPIP公司.
      FDConnection编辑器.png

    6. 单击测试按钮测试连接。
    7. 单击好 啊关闭连接编辑器。
  4. 对象检查器,设置以下属性TFD连接:
    1. 设置登录压缩程序属性到False(错误),这样就不会提示用户登录。
    2. 设置有联系的属性到真的.
      注:如果在开发环境中出现错误(“数据库不可用”),这意味着您没有InterBase的当前许可证。InterBase Developer Edition许可证是某些产品版本的产品的一部分。有关更多信息,请参阅故障排除.
  5. 添加TFD查询组件添加到表单中。
  6. 右键单击TFD查询组件并选择查询编辑器.
    1. 写入SQL命令文本编辑器按COMMON_NAME从BIOLIFE顺序中选择COMMON_NAME、SPECIES_NAME.
    2. 单击执行按钮查看命令结果。
      FDQueryCommandDB演示.png

    3. 单击好 啊以关闭查询编辑器。
  7. 对象检查器,设置活动的属性TFD查询组件到真的.
  8. 打开LiveBindings设计器并按如下方式连接数据和用户界面:
    1. 单击公用名(_N)在FDQuery1中,将鼠标光标拖动到项目。文本在ListView1中。
      LiveBindingsDesigner通用名称.png

      在这一点上,TBindSourceDB(绑定源数据库)TBindingsList(绑定列表)组件已添加到表单中。
    2. 单击物种_名称在BindSourceDB1中,将鼠标光标拖动到项目。详细信息在ListView1中。
      数据库演示设计时间.png
  9. 添加TFD为什么IBDriverLink组件添加到表单中。
  10. 添加TFDGUIxWaitCursor(TFDGUIxWaitCursor)组件添加到表单中。
注:这个为运行时准备FireDAC应用程序主题解释了TFDGUIxWaitCursor和TFDPhysIBDriverLink组件在FireDAC应用程序中的使用。

将应用程序部署到Mobile

到目前为止,您已经在桌面上使用了InterBase。这意味着实际的数据库位于您的本地硬盘驱动器上(例如,C: \Users\Public\Documents\Embarcadero\Studio\23.0\Samples\Data\dbdemos.gdb).在移动设备上,应用程序是沙盒式的,通常您只能读取和写入位于文件文件夹(适用于iOS设备)和内部的应用程序文件夹下的存储(适用于Android设备)。

要连接到移动设备上的本地数据库,您需要执行以下操作:

  • 将数据库部署到移动设备。
  • 文件文件夹(适用于iOS设备)或内部的存储(适用于Android设备)。

将InterBase ToGo必需的文件和数据库文件部署到Mobile

要在移动设备上执行应用程序,需要部署以下文件:

  • Interbase ToGo所需文件(许可文件和其他配置文件)
  • 数据库文件(dbdemos.gdb)

将这些文件部署到应用程序,如下所示:

  1. 可以使用以下两种方法之一将数据库添加到项目中:
    • 右键单击中的项目名称项目经理并选择添加…从上下文菜单(或项目>添加到项目)以显示添加到项目对话框。导航到数据库位置C: \Users\Public\Documents\Embarcadero\Studio\23.0\Samples\Data,选择数据库数据库演示程序.gdb然后单击正常开放.
    • 导航到数据库位置C: \Users\Public\Documents\Embarcadero\Studio\23.0\Samples\Data并拖放数据库数据库演示程序.gdb项目经理中的项目。单击是的以确认是否要将文件添加到项目中。
  2. 添加数据库文件后特色文件窗口显示。选择InterBase目标在中要素文件,然后单击好 啊关闭“特色文件”对话框。
    • 在节点下InterBase目标您需要选择在设备上部署应用程序时要使用的许可证。
      • 这个提示本教程开头介绍了如何激活InterBase许可证。
      • 可用许可文件的建议名称列在“特色文件”对话框,在以下名称模式下:reg_*.txt格式.
        如下图所示reg_ibtogo.txt格式本教程选择了许可文件。
      • 您可能已从Embarcadero收到IBToGo或IBSite的许可文件,其模式为reg_nnnnnnn.txt,其中nnnnnnn是生成的数字:
        • 如果您已保存该文件reg_ibtogo.txt格式注册表.txt位于以下位置(例如,C: \Users\Public\Documents\Embarcadero\InterBase\redist\InterBase2020),您可以只选择所需的许可证。
        • 如果已使用原始名称保存文件,请选择添加文件(如下一步所示),并将许可证文件包含在需要与应用程序一起部署的文件列表中。
    InterbaseToGo.png教程

  3. 打开部署管理器通过选择项目>部署.
  4. 选择调试配置-iOS设备-64位平台调试配置-Android平台从部署管理器顶部的目标平台下拉列表中,查看数据库数据库演示程序.gdb已添加到平台中。
  5. 看看如何远程路径属于数据库演示程序.gdb已为iOS和Android平台设置:
    • 远程路径在iOS设备平台上:启动\文档\
    更改为启动文档.png
    • 远程路径在Android平台上:资产\内部\
    为AndroidAssets.png添加DB

正如您刚才配置的那样,当您在移动设备上运行应用程序时,数据库文件(dbdemos.gdb)将部署到文件文件夹(适用于iOS平台)或内部的存储(用于Android平台)在多设备应用程序的沙盒区域中。

对于TFD连接,创建连接之前事件处理程序如下:

  1. 表单设计器,选择TFD连接组件。
  2. 对象检查器,转到“事件”选项卡,然后双击连接之前事件。
  3. 实施事件处理程序对于连接之前事件,添加以下代码:
    • 对于德尔福:
    程序 T形1.FDConnection1连接前(发件人: TObject(目标));
    开始
      {$IF定义(iOS)或定义(ANDROID)}
       FD连接1.参数.[“协议”] := “本地”;
       FD连接1.参数.['数据库'] :=  T路径.联合收割机(T路径.获取文档路径, 'dbdemos.gdb');
      {$ENDIF}
    结束;
    

    这个T路径记录在中声明系统。IO实用程序单位,所以您需要添加系统。IO实用程序在uses子句中,如下所示:

    实施
    
    {$R*.fmx}
    {$R*.NmXhdpiPh.fmx安卓}
    {$R*.iPhone4in.fmx IOS}
    
    使用 系统.IO实用程序;
    
    程序 T形1.FDConnection1连接前(发件人: TObject(目标));
    //此处显示以前的代码
    
    • 对于C++语言:
    空隙 __快速呼叫 T形1::SQLConnection1连接前(TObject(目标) *发件人)
    {
    #如果定义了(_PLAT_IOS)||定义了(-PLAT_ANDROID)
          FD连接1->参数->[“协议”] = “本地”;
          FD连接1->参数->[“数据库”] = 系统::Ioutils公司::T路径::联合收割机(系统::Ioutils公司::T路径::获取文档路径(), “dbdemos.gdb”);
    #结尾
    }
    

    您需要添加#包括<系统。IOUtils.hpp>在单元(.cpp文件)中。

在移动设备上运行应用程序

现在您的应用程序已准备好运行(运行>运行或按F9)。您应该能够像在IDE中一样浏览数据。您可以使用搜索框缩小列表范围。

网间网操作系统 安卓

IPodSearch数据库演示.png

截图2013-11-02-03-34-10.png

故障排除

InterBase问题

请参见以下内容部分提供了有关Interbase许可证问题的详细信息。

注:按照中的步骤操作IBSite和IBToGo部署许可以获取有效的许可证文件。

异常处理问题

如果应用程序在没有正确的异常处理代码的情况下引发异常,那么多设备应用程序只会在运行时崩溃(消失)。

如果遇到崩溃,您可能希望在使用以下步骤解决问题时手动连接到数据库:

  1. 选择FD连接1组件,并更改有联系的属性到False(错误).
  2. 将按钮拖到表单上,然后创建以下事件处理程序以手动连接到数据库:

    德尔福:

    程序 T形1.按钮1单击(发件人: TObject(目标));
    开始
      尝试
        FD连接1.有联系的 := 真的;
        FD查询1.活动 := 真的;
      除了
         e(电子): 例外 
        开始
          显示消息(e(电子).消息);
        结束;
      结束;
    结束;
    

    C++语言:

    空隙 __快速呼叫 T形1::按钮1单击(TObject(目标) *发件人) {
        尝试 {
            FD连接1->有联系的 = 真的;
            FD查询1->活动 = 真的;
        }
        抓住(例外 &e(电子)) {
            显示消息(e(电子).消息);
        }
    }
    
  3. 检查错误消息。

另请参见

样品