三层结构中如何处理blob数据?在线等待
数据库采用SQL Server2000
数据定义如下:
mytable
字段名 数据类型 含义
name char(20) 学生姓名
filename varchar(20) 作业文件名
zyfile Image(16) 作业内容
我的做法:
在viewtype中定义方法StuTjzy
parameters
name type modifier
xm BSTR [in]
wjm BSTR [in]
zy BSTR [in] (blob字段此处对应的参数类型应是什么?)
应用程序服务器部分
procedure THomeWork.StuTjzy(const xm,wjm,zy: WideString);
begin
StuTjzyQry.Close;
StuTjzyQry.SQL.Clear;
StuTjzyQry.Sql.add('Insert INTO mytable(name,filename,zyfile)');
StuTjzyQry.Sql.add('VALUES(:a,:b,:c)');
StuTjzyQry.ParamByName('a').asstring:=xm;
StuTjzyQry.ParamByName('b').asstring:=wjm;
StuTjzyQry.ParamByName('c').AsBlob:=zy;
StuTjzyQry.ExecSQL;
end;
end;
客户端
MainFrm.SocketConnection1.Connected:=true;
if OpenDialog1.Execute then
begin
MainFrm.SocketConnection1.AppServer.StuTjzy(MainFrm.Edit1.Text,
ExtractFileName(OpenDialog1.FileName),TjzyDataSetzy.loadFromFile(OpenDialog1.FileName));
MainFrm.SocketConnection1.Connected:=False;
end;
运行时出错
[Error] UStu.pas(210): Type not allowed in Variant Dispatch call
是不是blob字段不能用此种方法调用,在两层中的存入与读出已实现,但三层中该如何实现呢?