三层数据库 mysql socket方式联接 ,存取图片 ,请问?现在能取不能存

三层数据库 mysql socket方式联接 ,存取图片 ,请教?现在能取不能存
用uniDAC来联接数据库

以前直接写mysql的代码如下:mysql数据表中图片字段类型是longblob

Delphi(Pascal) code

var
  bh,filename:string;
  fimage:TMemoryStream;
begin
//打开图片对话框
  if openpicturedialog1.Execute =false then exit;
  filename:=openpicturedialog1.FileName;
//将图片转换大小并存入stream
  fimage:=TMemoryStream.Create;
  .......
  .......
  .SaveToStreamJpeg(fimage);

//将内存中的图片放入数据库中
  sqlquery_zp.SQL.Text:='insert into db_zp(编号,代码,照片,修改日期) values(:a,:b,:c,:d)';
  bh:='ZP'+formatdatetime('YYYYMMDDHHMMSSZZZ',NOW);
  sqlquery_zp.Params.ParamByName('a').Text:=bh;
  sqlquery_zp.Params.ParamByName('b').text:=UpperCase(sqlquery_ql.FieldValues['桥梁编码']);
  sqlquery_zp.Params.ParamByName('c').LoadFromstream(fimage,ftBlob);
  sqlquery_zp.Params.ParamByName('d').Text:=formatdatetime('YYYYMMDDHHMMSSZZZ',NOW);
  try
    sqlquery_zp.ExecSQL;
  except
    application.MessageBox(' 错误: 照片数据库添加资料失败 ','信息',MB_OK);
    exit;
  end;



//图片转换大小并存入stream中的 代码可以不管它,那里的结果就是将jpg图片存到流里面,
代码这样写完全可以通过,一直运行的也挺好


现在写的程序是用三层数据库 用socket方式联接服务端与客户端
服务端 uniConnection1+UniQuery1+DataSetProvider1
  DataSetProvider1的options=[poFetchBlobsOnDemand,poAllowCommandText]
客户端 SocketConnection1+clientdataset1
代码和上面的代码几乎一样,不过就是将sqlquery_zp 改成了 clientdata_zp 
执行后能将 编号,代码,修改日期正确写到数据库中,但是 照片 字段大小:2位元组 (用Navicat for mysql查看没有图片写进去,如果正常的话,同一张图片字段大小应该有1727元组)
同样的数据库不用clinetdata方式写,直接用uniquery写mysql就是可以的

奇了怪了,请大伙支招

对了,用uniquery 直接写,数据表(gbk或是gb2312都行,但是uniConnection1联接中必须使用gb2312,用GBK就报错,估计与我的数据表字段名使用中文名相关吧,但是用clientdataset来作的时候,联接方式用gb2312或是gbk都是一样的结果)

------解决方案--------------------
还是推荐这个方法吧:用TBlobField(FieldByName('Exe_Bin')).LoadFromFile()加载进本地数据集-->
把本地数据库更新到服务器-->服务器再上传到数据库

实用性强些,我的两层及三层都是用这个做的
------解决方案--------------------
图像数据要转化为字符,再传输。