Delphi XE4 For IOS 之SQLite初试

关于SQLite的开发官方有给出一个简单的例子,该例子的地址是http://docwiki.embarcadero.com/RADStudio/XE4/en/IOS_Tutorial:_Using_SQLite_in_an_iOS_Application.

这个例子使用的dbExpress控件做数据库连接的。dbExpress这个说实在的不是很好用,本人也不太喜欢用这个。

于是乎本人改用了UniDac和FireDac重做了这个demo,其中FireDac下载地址是http://altd.embarcadero.com/download/radstudio/xe4/FireDAC_8.0.1.3279.exe ,UniDac可以在盒子里面找,这里就不提供了。

代码的话其实都是类似的,基本不用怎么去修改。换成这个两个控件遇到的问题是中文显示乱码的问题,要花费了不少时间,跟大家分享下经验,和交流下。还有就是现阶段的Sqlite文件都没有加密,加了密码这个两个数据控件是死活都连接不上。其中加密码FireDac其实有个办法能解决,这个控件自带加密的函数功能。但是,如果用它提供的函数加密的话,用的第三方管理工具是连接不上的,要连接上每次都要去掉密码的,很是麻烦,我用的第三方管理工具是SQLite Expert Professional 3和Navicat For Sqlite。建议建库还是用SQLite Expert Professional ,不然编码问题会莫名其妙的出来的。

按照官方那个demo创建好相应的数据库文件,建库的时候记住编码要选择UniCode,不然中文会显示成乱码的。就UniDac来说

image     image

UseUniCode选择选择True。还有里面涉及到字段操作的最后都用WideString类型的,不然还是会乱码。来个运行的图

image

对于FireDac来说设置StringFormat这个属性设置成UniCode,这个属性花了点时间去查找。然后就是字段的操作还是跟之前一样,要用widestring类型。

imageimage

就里面添加按钮的代码是:

procedure TForm2.btnInsertClick(Sender: TObject);

var

  ShopItem: String;

begin

  try

    if InputQuery('Enter New ShopItem', 'ShopItem', ShopItem) and not (ShopItem.Trim = '') then

    begin

      ADQueryInsert.ParamByName('ShopItem').AsWideString := ShopItem;

      ADQueryInsert.ExecSQL();

      ADTable1.Refresh;

      LinkFillControlToField1.BindList.FillList;

    end;

  except

    on e: Exception do

    begin

      SHowMessage(e.Message);

    end;

  end;

end;

都用WideString类型问题就不是问题了。

你可能感兴趣的:(sqlite)