注册 登录
编程论坛 Delphi论坛

求助:保存二进制数据到sql出错问题!

xxiangzi 发布于 2012-12-29 15:56, 642 次点击
本人需要将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;
2 回复
#2
xxiangzi2012-12-29 18:19
补充:
“with ADOQ_GzAd to”有误,应为:“with ADOQ_GzAd do”。

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

[ 本帖最后由 xxiangzi 于 2012-12-29 18:20 编辑 ]
#3
xxiangzi2013-01-03 10:04
大侠们大忙了,没空搭理我。

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

1