系统结构:DELPHI 5 + DOA (Direct oracle access) + Oracle 9I 
    中间层采用SOCKETCONNECTION
    因为客户端采用FORMULA ONE ,所以想把F1BOOK存到数据库中,需要的时候再读取出来。可是发现一个问题:尝试使用了各种方式给BLOB字段付值,也APPLYUPDATE(-1),数据保存在客户端,也就是说你可以上一条、下一条的浏览。但等你重新打开查询,发现其实数据没有更新到服务器,只是保存在客户端的缓存中。但如果不对BLOB字段付值,数据是可以正常的写入数据库。
    在写入BLOB 字段采用了
BS:=TClientBlobStream.create(TBlobField(cdTest.FieldByName('savefile')),bmRead)
或者 TBlobfield(cdTest.fieldbyname('savefile')).LoadFromfile(sFileName)
或者 TBlobField(cdTest.FieldByName('savefile')).loadfromstream(sstream)    而用两层结构,是没有问题,可以用上述的任一种方式实现写入读出。我用两层的方式写入,在三层的时候也可以读出来。
    所以问题的关键就是三层的BLOB不能写入数据库。    在大富翁和CSDN查询了,很多人都遇到类似的问题,但都没有一个明确的答案。求教一个明确的解答。    我的TDATASETPROVIDER OPTIONS 只选择了ALLOWCOMMANDTEXT。同时设置:RESOLVETODATASET=TRUE (否则会提示NO KEY DIFINIED 之类的错误信息)
    CLIENTDATASET 都是DEFAULT 。 FECHONDEMOND=TRUE
   
   我知道还可以把参数传到中间层,在中间层更新数据,求解详细答案高分求解。(另外一个奇怪的问题,以前没有遇到过。我的中间层如果手动启动运行,但是之后如果客户端呼中间层,却不会直接调用已经启动的服务,而会自己启动另外一个相同的服务,请问怎么回事?导致我不能调试中间层程序,断点就不能切入。谢谢)