Delphi TADOQuery控件读取oracle数据库clob字段内容太长被截断

来源:互联网 发布:u盘删除数据恢复 编辑:程序博客网 时间:2024/06/10 06:34

今天遇到个问题,在使用Delphi 的TADOQuery控件读取oracle表clob类型字段内容时,字段长度超过68695长度被截断的情况。

经过测试在本地读取数据正常不受长度限制,在服务器上面测试超过68695就被截断。怀疑是两边ADO设置不同造成的。


解决方法:

procedure TForm1.btn1Click(Sender: TObject);var  Qry: TADOQuery;  msgs: string;begin  Qry := TADOQuery.Create(nil);  Qry.CursorLocation := clUseClient;  // 这个属性非常重要设置为clUseClient则字符串过长被截断  try    Qry.Connection := FDB;    Qry.SQL.Text := ' select GID, MSGS from hd_prtdata where gid = ' + Edit1.Text;    Qry.Open;    Qry.First;    msgs := Qry.FieldByName('MSGS').AsString;    mmo1.Lines.Add(IntToStr(Length(msgs)));    mmo1.Lines.Add(msgs);  finally    Qry.Free;  end;end;

修改代码如下:

procedure TForm1.btn1Click(Sender: TObject);var  Qry: TADOQuery;  msgs: string;begin  Qry := TADOQuery.Create(nil);  Qry.CursorLocation := clUseServer;  try    Qry.Connection := FDB;    Qry.SQL.Text := ' select GID, MSGS from hd_prtdata where gid = ' + Edit1.Text;    Qry.Open;    Qry.First;    msgs := Qry.FieldByName('MSGS').AsVariant;    mmo1.Lines.Add(IntToStr(Length(msgs)));    mmo1.Lines.Add(msgs);  finally    Qry.Free;  end;end;


阅读全文
0 0