我在oracle数据库中定义了一个CLOB类型的字段,
请问在DELPHI中如何存取Clob类型的数据!

解决方案 »

  1.   

    {假设表t中B字段是CLOB类型}
    {保存}
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      with ADOQuery1 do
      begin
        Close;
        Connection:=ADOConnection1;
        SQL.Clear;
        SQL.Add('select A,B from t where 1<>1');
        Open;
        Append;
        FieldByName('A').AsInteger:=1;
        TBlobField(FieldByName('B')).LoadFromFile('d:\1.txt');
        try
        Post;
        except
          cancel;
          showmessage('文件保存失败,请重试!');
          exit;
        end;
        showmessage('文件保存成功!');
      end;
    end;{读}
    procedure TForm1.Button2Click(Sender: TObject);
    var
      S:TADOBlobStream;
    begin
      with ADOQuery1 do
      begin
        Close;
        Connection:=ADOConnection1;
        SQL.Clear;
        SQL.Add('select A,B from t where A=1');
        Open;
        if not IsEmpty then
        begin
          s:=TADOBlobStream.Create(TBlobField(FieldByName('B')),bmRead);
          s.SaveToFile('d:\2.txt');
          s.Free;
          showmessage('文件读取成功!');
        end else
          showmessage('无数据!');
      end;
    end;根据你要保存的数据,自己改变一下
      

  2.   

    PhotoStream := TMemoryStream(DataSet.CreateBlobStream(DataSet.FieldByName('路线指示图'), bmRead));
      if (PhotoStream.Size > 0) then
      begin
        pMap := TJPEGImage.Create();
        pMap.LoadFromStream(PhotoStream);
        Image1.Picture.Assign(pMap);
        pMap.Free;
      end
      else
        Image1.Picture.Assign(nil);
      PhotoStream.Free;CleverDBGrid1.Query.Insert();
      CleverDBGrid1.Query.FieldByName('mine_id').Value := SystemParam.__MineID;
      CleverDBGrid1.Query.FieldByName('路线名称').Value := Trim(edExitPath.Text);
      CleverDBGrid1.Query.FieldByName('路线说明').Value := edExitInfo.Lines.Text;
      PhotoStream := TMemoryStream.create();
      if (Image1.Picture.Graphic <> nil) then
      begin
        Image1.Picture.Graphic.SaveToStream(PhotoStream);
      end;
      tfPhoto := TBlobField(CleverDBGrid1.Query.FieldByName('路线指示图'));
      tfPhoto.LoadFromStream(PhotoStream);
      PhotoStream.Free;  CleverDBGrid1.Query.Post();
      

  3.   

    CLOB直接当字符串这样存取就行