关于三层结构数据库blob存储的问题(100分)

  • 主题发起人 主题发起人 xyzsuper
  • 开始时间 开始时间
X

xyzsuper

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个三层结构的数据库(delphi6+Sql2000),要把word生成的doc文件以二进制流的格式送到数据库中的字段context,该字段是image型。我用的代码如下:
var
fileWordname: string;
DocNoTemp: integer;
cdsText: TClientDataSet;
fileWordName:= c:/wordfile.doc;
if fileExists(fileWordname) then
with cdsText do
begin
close;
CommandText := 'update exampletext set context = :context
where DocNo='+intToStr(DocNoTemp);
Params.ParamByName('Context').LoadFromFile(fileWordname,ftBlob);
execute;
end;
就是用cdsText这个客户端的TClientDataSet控件去连接中间层的接口,但是最终存到数据库中的都是乱码,我用Sql事件探察器查了一下最终编译生成的sql语句:
exec sp_executesql N'update exampletext set Context=@P1 where DocNo=5', N'@P1 varchar(4)', '邢
中间层把Context这个image字段当成varchar字段呢,就产生了这种错误。如果是直接用adoquery或adotable连接数据库则完全正确,但是那是两层结构,我现在需要的是三层结构的方法,只有clientdataset才能用在三层的客户端,大富翁论坛上已经类似的问题我都看过了,基本上都是两层的解决方法,没有三层的。
现在请教高手在三层上该怎么办才能把流格式正确的存到数据库中,我现在非常着急,谢谢啦
 
后退
顶部