Delphi for iOS开发指南(14):在iOS应用程序中使用InterBase ToGo

IOS 专栏收录该内容
18 篇文章 0 订阅
在开始这篇教程之前,你应该预先阅读并按下面教程实际操作过:

 

•iOS开发指南(9):在iOS应用程序中使用ListBox组件来显示TableView

 


这篇教程描述了在iOS Device上,通过dbExpress框架来浏览由InterBase ToGo管理的数据的基本步骤。

 

 

 

 

 

 

 

 

 

使用DBExpress来连接数据库

 


dbExpress是一个十分快速的数据库访问框架,由Delphi编写。RAD Studio为很多主要的数据库提供驱动,例如InterBase,Oracle,DB2,SQL Server,MySQL,Firebird,SQLite,和ODBC。你可以使用相同的过程来访问这些不同的数据库。

 

•在iOS平台,dbExpress支持InterBase ToGo,也支持SQLite。这些数据库产品可以运行在iOS Device上。
•对于其他数据库,例如,Oracle,你至少需要一个客户端的库。在Windows平台上,客户端的库由一个DLL提供来连接数据库。因为,你需要使用中间层技术,例如DataSnap来在iOS Device上连接这些数据库。

 

 

 

另一个讨论如何在iOS Device上不使用客户端的库连接企业级数据库的教程;请查看“iOS教程:在iOS客户端应用程序中连接企业级数据库”。

 

 

 

 

 

 

 

 

 

 


设计并配置用户界面

 


这篇教程使用一个TListBox组件来作为UI元素。

 


使用下列步骤配置一个ListBox组件:
1. 创建一个HD FireMonkey Mobile Application,选择File>New>FireMonkey Mobile Application-Delphi>Blank Application。
2. 拖放一个TListBox组件到窗体上。
3. 在Object Inspector,设置ListBox组件的如下属性:
•设置Align属性为alClient,以便ListBox组件填充整个窗体。
•设置DefaultItemStyles.ItemStyle属性为listboxitembottomdetail。
4. 在Designer或Editor中右击TListBox组件,选择Add Item,然后添加下面这些组件:
•TListBoxHeader组件。
•TSearchBox组件。

 

5. 关闭Items Designer。
6. 添加一个TLabel组件到TListBoxHeader上,在Object Inspector中设置如下属性:
•设置TLabel组件的Align属性为alClient。
•设置StyleLookup属性为toollabel。
•设置TextAlign属性为taCenter。
•设置Text属性为DB DEMO。

 

 

 

 

 

 

 

 

 

 

 

 

连接数据

 


下面是使用dbExpress来连接数据库中的数据的基本步骤:
1. 在Tool Palette上,双击TSQLConnection组件。


2. 在Object Inspector中,设置TSQLConnection的如下属性:

        1. 这个应用程序使用InterBase ToGo,因此设置Driver属性为IBLite/ToGo。

       
        2.设置LoginPrompt属性为False,以便于用户不需要再提示输入密码了。
        3. 点击Params属性旁边的[…]省略号按钮,然后设置Database值为C:\Users\Public\Documents\RAD Studio\11.0\Samples\Data\dbdemos.gdb(数据库存放路径);然后关闭对话框:

       
        4. 设置Connected属性为True。


注:如果你在开发环境里得到一个错误(“不可用的数据库”),这意味着你没有一个当前可用的InterBase许可。这个InterBase开发者版本许可包含在一些版本的产品中。


3.在窗体上添加一个TSQLDataSet,然后设置如下属性:
        1. 设置SQLConnection属性为SQLConnection1(你之前添加的)。
        2. 设置CommandText属性为select COMMON_NAME,SPECIES_NAME from BIOLIFEorder by COMMON_NAME。
        3. 设置Active属性为True。
        4. 打开LiveBindings Designer,然后按如下操作连接数据和用户界面:

       
        1. 在BindSourceDB1中点击COMMON_NAME,然后拖动鼠标光标到ListBox1里抽Item.Text上。
        2. 在BindSourceDB1中点击SPECIES_NAME,然后拖动鼠标光标到ListBox1中的Item.Detail上。

 

 

 

 

 

 

 

 

 

 


布署你的应用程序到iOS

 


到了这里,你需要在你的电脑使用InterBase。这意味着真正的数据库放在你的本地磁盘上(例如,C:\User\Public\Documents\RAD Studio\11.0\Samples\Data\dbdemos.gdb)。在iOS Device上,应用程序是在沙箱环境里运行的,通常你只能在你应用程序目录的Documents目录下才能读写数据。

 

 

 

要在iOS上连接到一个本地数据库,你需要执行下列操作:

 

•布署数据库到iOS Device。
•更改配置(连接到数据库文件的)到一个在Documents目录下的本地文件。

 

 

 

 

 

 

布署InterBase ToGo,dbExpress Driver,以及数据库文件到iOS

 


要在iOS上执行你的应用程序,你需要布署下面这些文件:

 

1.InterBase ToGo
2.InterBase的dbExpress Driver
3.数据库文件(dbdemos.gdb)
        1. 选择Project>Deployment来打开Deployment Manager。
        2. 在Deploy Manager顶部的目标平台的下拉列表中选择All-Configurations-iOS Simulator Platform。
        3. 选择Add Featured Files():
        4.选择下列数据模块,然后点击OK来关闭Featured Files对话框:

                1.InterBase ToGo。你需要选择用来分发应用程序到Device上的许可。许可文件的默认名称在Featured Files对话框中列出,如下名称模板:reg_*.txt。就像你可以在下图看到的,在这篇教程中,选中的是reg_ibtogo.txt许可文件。


你可能已经从Embarcadero那里接收到一个用于ToGo或IBLite的许可文件,名称类似于reg_nnnnnnn.txt,nnnnnnn是生成的数字:
•如果你已经保存这个文件为reg_ibtogo.txt或reg_iblite.txt到如下目录(例如,C:\Users\Public\Documents\InterBase\redist\InterBaseXE4),你只需要选择这个对应的许可。
•如果你将它保存为原来的文件名,那么选择Add Files(在下一步中有显示),然后添加需要布署到应用程序的许可文件。
2. DBExpress InterBase Driver


5. 选择Add Files,然后选择数据库文件(例如,C:\Users\Public\Documents\RAD Studio\11.0\Samples\Data\dbdemos.gdb)。
6. 选择dbdemos.gdb,然后更改Remote Path为StartUp\Documents\。
7. 选择Platforms列(在dbdemos.gdb行双击省略号[…]):

        1. 确保在dbdemos.gdb行的Platforms列显示为iOS Simulator和iOS Device。
        2.如果存在Win32,那么移除(你不需要复制数据库文件到Win32平台)。

8. 选择All-Configurations-iOS Device平台,确保dbdemos.gdb设置为布署到StartUp\Documents\。

当你配置完之后,数据库文件(dbdemos.gdb)会被布署到你的iOS应用程序的沙箱区域的Documents目录。

 

 

 

 

 

 

 

 

 

修改你的代码来连接在iOS上的本地数据库文件

 


之前的步骤提到过,TSQLConnection组件是使用绝对路径连接到在你本地文件系统上的数据库。因此在连接到数据库之前,你需要替换文件的路径,如下:
1. 在Form Designer中,选择SQLConnection1组件。
2. 在Object Inspector中,双击BeforeConnect事件的Value区域。
3.添加如下代码到事件处理过程中:

 

  1. procedure TForm1.SQLConnection1BeforeConnect(Sender: TObject);  
  2.   
  3. begin  
  4.   
  5.   {$IFDEF IOS}  
  6.   
  7.     SQLConnection1.Params.Values['Database']  
  8.   
  9.     := GetHomePath + PathDelim  
  10.   
  11.        + 'Documents' + PathDelim + 'dbdemos.gdb';  
  12.   
  13.   {$ENDIF}  
  14.   
  15. end;  
procedure TForm1.SQLConnection1BeforeConnect(Sender: TObject);

begin

  {$IFDEF IOS}

    SQLConnection1.Params.Values['Database']

    := GetHomePath + PathDelim

       + 'Documents' + PathDelim + 'dbdemos.gdb';

  {$ENDIF}

end;


 

 

 


GetHomePath函数提供给你一个iOS应用的真实根目录。强烈建议使用常量System.SysUtils.PathDelim,因为PathDelim使用特定平台的路径分隔符(而不是写死在代码里,例如\或/)。

 

 

 

 

 

 

 

 

 

在iOS Simulator或iOS Device上运行你的应用程序

 


现在,你的应用程序可以准备运行了。你应该可以在IDE中浏览到数据。你也可以使用搜索框来缩减列表,如下面第二张图所示:

 

 

 

 

 

 

 

 

 

 

问题解决

 


InterBase许可问题

 


当你在开发环境下连接数据库时如果你遇到错误(“不可用的数据库”),这意味着你没有一个当前InterBase的许可。

 

•InterBase开发者版本的许可已经作为一些产品版本的一部分。
•对于一个已经注册了的RAD Studio安装要激活InterBase开发者版本的许可,要Embarcadero Product License Manager(点击Start|All Programs|Embarcadero InterBase XE3)。

 

 

 

异常处理问题

 


如果你的应用程序抛出一个异常,而没有合适的异常处理代码,你的iOS应用会在运行时崩溃。

如果你在运行时遇到程序崩溃,你可能要使用下列步骤来手动连接到数据库:
1.选中SQLConnection1组件,更改Connected属性为False。
2.拖放一个按钮在窗体上,然后创建如下事件处理过程来手动连接到数据库:

 

  1. procedure TForm1.Button1Click(Sender: TObject);  
  2.   
  3. begin  
  4.   
  5.   try  
  6.   
  7.     SQLConnection1.Connected := True;  
  8.   
  9.     SQLDataSet1.Active := True;  
  10.   
  11.   except  
  12.   
  13.     on e: Exception do  
  14.   
  15.     begin  
  16.   
  17.       ShowMessage(e.Message);  
  18.   
  19.     end;  
  20.   
  21.   end;  
  22.   
  23. end;  
  24.   
  25.    
procedure TForm1.Button1Click(Sender: TObject);

begin

  try

    SQLConnection1.Connected := True;

    SQLDataSet1.Active := True;

  except

    on e: Exception do

    begin

      ShowMessage(e.Message);

    end;

  end;

end;

 


 

 

 

 

 

 

 

 


常见错误及解决方案

 


下面是一些常见的错误(在连接数据库的时候你可能会遇到),以及解决这些问题的建议:

 


在iOS上的错误                  建议

   检查数据库文件(dbdemos.gdb)是否传递到了“StartUp\Documents”。

    检查InterBase ToGo的许可文件是否传递。

     检查是否你指向了本地文件(给SQLConnection1组件的OnBeforeConnect事件添加一个事件处理过程)。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值