急!!!!三层模式下图像字段无法更新!200分的问题!!!

lenyunzi 2003-02-24 08:43:29
C++Builder6+SQL Server2000,三层模式下,图像字段无法更新到数据库,其他字段都可正常更新到数据库中。在客户端,图像字段可正常编辑更改。
(注:在两层结构能正常对图像字段进行读写操作。)

程序结构如下:

应用程序服务器端:使用ADOConnection、ADODataSet、DataSetProvider组件。

客户端:使用DCOMConnection、ClientDataSet组件。用DBImage自动获取并显示图像字段;用OpenDialog与Image加载图片,作为编辑更改的来源。

部分程序代码如下:
......
CustomerData->ClientDataSet1->Edit();
......

CustomerData->ClientDataSet1->FieldByName("相片")->Assign(Image1->Picture);//用此语句在客户端,图像字段可正常更改

......
CustomerData->ClientDataSet1->Post();

......
//更新数据库
if(CustomerData->ClientDataSet1->ChangeCount>0)
CustomerData->ClientDataSet1->ApplyUpdates(-1);


使用过在CSDN论谈中提及的方法(如:TBlobField、TADOBlobStream、TMemoryStream、TFileStream等等),都不行。


请各位高手赐教!高分答谢,分数可再加。



...全文
59 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cuptbluesky 2003-03-13
  • 打赏
  • 举报
回复
学习
我来看看CB 2003-03-12
  • 打赏
  • 举报
回复
厉害!
lenyunzi 2003-03-12
  • 打赏
  • 举报
回复
本问题已解决!

图像字段属Blob类型的数据,包含图像字段的表不能是其它表的子表,即不能是使用Master/Detail类型的数据结构。

//方法1:
CustomerData->PictureClientDataSet->FieldByName("相片")->Assign(Image1->Picture);
CustomerData->PictureClientDataSet->Post();
CustomerData->PictureClientDataSet->ApplyUpdates(-1);


//方法2:以流的方式加载到Blobs字段

TBlobField *LinkBlobField;
TFileStream *fStream;
TMemoryStream *mStream=new TMemoryStream();

fStream=new TFileStream(OpenDialog1->FileName,fmOpenRead);
mStream->CopyFrom(fStream,fStream->Size);

LinkBlobField=(TBlobField*)CustomerData->PictureClientDataSet->FieldByName("相片"); //与Blobs字段关连
LinkBlobField->LoadFromStream(mStream);

CustomerData->PictureClientDataSet->Post();
CustomerData->PictureClientDataSet->ApplyUpdates(-1);
WhyAndAnswer 2003-03-12
  • 打赏
  • 举报
回复
学习
cdlcl 2003-02-24
  • 打赏
  • 举报
回复
我只知道想服务器传递sql command了
houzy123 2003-02-24
  • 打赏
  • 举报
回复
我也遇到此类问题,我曾经问如何在client用传递图片参数update到sql server2k,但没人回应
l_clove 2003-02-24
  • 打赏
  • 举报
回复
过程是什么样的?
DB->Middle Ware->Client?
问题出在这儿吧:Middle Ware

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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