三层结构中如何处理blob数据?在线等待

slchen 2003-08-28 01:28:46
数据库采用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字段不能用此种方法调用,在两层中的存入与读出已实现,但三层中该如何实现呢?


...全文
31 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
slchen 2003-08-30
  • 打赏
  • 举报
回复
duanlian(狗狗)

在viewtype中定义方法StuTjzy
parameters
name type modifier

xm BSTR [in]
wjm BSTR [in]
zy variant [in]

客户端
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



slchen 2003-08-30
  • 打赏
  • 举报
回复
up
slchen 2003-08-29
  • 打赏
  • 举报
回复
duanlian(狗狗)

在viewtype中定义方法StuTjzy
parameters
name type modifier

xm BSTR [in]
wjm BSTR [in]
zy BSTR [in] (blob字段此处对应的参数类型应是什么?)


在type中没有OleVariant类型呀?

duanlian 2003-08-29
  • 打赏
  • 举报
回复
zy 的数据类型为 *OleVariant;
但是最好不用存储过程,用如下方法

1、服务器端做好与数据库的连接数据集,设置好Provider。
2、客户端代码如下
begin
TClientBlobField(字段名).LoadFormFile(文件名);
ClientDataSet.ApplyUpdates(0);
end;
slchen 2003-08-29
  • 打赏
  • 举报
回复
三层中如何做?
chen_s_G 2003-08-28
  • 打赏
  • 举报
回复
delphi中有一个tblobfield类型,
直接转换为此类型更新即可
Tblobfield(字段名).loadformfile
slchen 2003-08-28
  • 打赏
  • 举报
回复
谁做过这方面的应用,请指点一二,我急于解决问题。
slchen 2003-08-28
  • 打赏
  • 举报
回复
谁做过这方面的应用,请指点一二,我急于解决问题。

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧