标题:求助:保存二进制数据到sql出错问题!
只看楼主
xxiangzi
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-12-29
结帖率:0
 问题点数:0 回复次数:2 
求助:保存二进制数据到sql出错问题!
本人需要将TRzRichEdit组件内的数据以二进制流保存到SQL数据库表内,不管是增加一行或修改某一行(无论id为多少),二进制数据总是保存在表的第一行,思考多日未果,求助各位大侠!

说明:本人初次来,没有分给,请多包涵!

代码大意如下(实际的更复杂):

Procedure TGzAdmin_frm.Button1Click(Sender:TObject);
var
    strSql:string;
    streamCZ:TMemoryStream;
begin
    strSql:='select * from tablename where (id=20)';
    with ADOQ_GzAd to
    begin
        Close;SQL.text:=strSql;Open;
        Active:=True;
        edit;
        FieldByName('列A').AsString:='AAA';  
        FieldByName('列B').AsString:='BBB';
        
        StreamCZ:=TMemoryStream.Create;
        RzRichEdit_Yway.lines.LoadFromStream(StreamCZ);
        StreamCZ.position:=0;
        TBlobField(ADOQ_GzAd.FieldByName('列C').LoadFromStream(StreamCZ);

        FieldByName('列D').AsString:='';
        
        Post;
        StreamCZ.Free;
    end;
end;
搜索更多相关主题的帖子: 数据库表 二进制 where 
2012-12-29 15:56
xxiangzi
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-12-29
得分:0 
补充:
“with ADOQ_GzAd to”有误,应为:“with ADOQ_GzAd do”。

列A,列B、列D为字符串数据,都能正常保存到所选择的id行,只有列C(二进制数据)总是将数据保存在表的第一行。

[ 本帖最后由 xxiangzi 于 2012-12-29 18:20 编辑 ]
2012-12-29 18:19
xxiangzi
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-12-29
得分:0 
大侠们大忙了,没空搭理我。

今天重新调试代码,找到问题的所在:
第一、数据并非意外保存在第一行,而是没有保存(原因看错了)。
第二、不能保存在的原因是“RzRichEdit_Yway.lines.LoadFromStream(StreamCZ);”,应改为:RzRichEdit_Yway.lines.SaveToStream(StreamCZ);

2013-01-03 10:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-394444-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.211710 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved