谁知道为什么用delphi的ado对象取出来的clob字段的内容不全?
我的代码如下:
procedure TForm1.Button2Click(Sender: TObject);
var
adoblob1:TADOBlobStream;
adoblob2:TADOBlobStream;
i,size:Integer;
begin
i:=0;
adoc.Open;
adoq.Connection:=adoc;
adoq.SQL.Clear;
adoq.SQL.Add('select nr from ck_jxu_tab_lsyg');
adoq.Open;
adoq.First;
while not adoq.Eof do
begin
inc(i);
size:=TField(adoq.FieldByName('nr')).DataSize;
adoblob1:=TADOBlobStream.Create(TMemoField(adoq.FieldByName('nr')),bmRead);
adoblob1.SaveToFile('c:\x'+IntToStr(i)+'.txt');
adoblob1.free;
adoq.Next;
end;
adoq.Close; adoc.Close;
end;
其中nr为Clob字段类型
我的代码如下:
procedure TForm1.Button2Click(Sender: TObject);
var
adoblob1:TADOBlobStream;
adoblob2:TADOBlobStream;
i,size:Integer;
begin
i:=0;
adoc.Open;
adoq.Connection:=adoc;
adoq.SQL.Clear;
adoq.SQL.Add('select nr from ck_jxu_tab_lsyg');
adoq.Open;
adoq.First;
while not adoq.Eof do
begin
inc(i);
size:=TField(adoq.FieldByName('nr')).DataSize;
adoblob1:=TADOBlobStream.Create(TMemoField(adoq.FieldByName('nr')),bmRead);
adoblob1.SaveToFile('c:\x'+IntToStr(i)+'.txt');
adoblob1.free;
adoq.Next;
end;
adoq.Close; adoc.Close;
end;
其中nr为Clob字段类型
解决方案 »
- 简单的SQL问题,我不懂ADO,懂的进来看看就知道了!解决就结,来者有分
- 可以获得TEdit内字符串的像素个数吗!??
- Pansichar,Tboldfield请问各位大侠这两个单词是什么意思?
- 继续昨天的问题:怎样用代码关闭 Explorer 浏览器?而不是关机
- 高分送高手,急急急,如何编写报表金字塔??
- "无效的被呼叫方"!这是怎么回事??求救
- 如何实现类似ToolButton的Hint的效果?
- 关于delphi和C#互相调用dll的问题?
- delphi 读取文本内容循环问题 新手
- tstringgird的列的宽度可以动态修改吗?如果可以怎么改啊?请高手赐教
- 请问如何向某服务器用http的方式Post一个网址?
- ado or odbc or bde?
var
SourceStream: TMemoryStream;
begin
SourceStream := TMemoryStream.Create;
...
(adoq.FieldByName('nr') as TBlobField).SaveToStream(SourceStream);
SourceStream.SaveToFile('c:\x+IntToStr(i)+.txt');
...
end;
这样就可以了,还有你访问的字段一定要是BLOB字段,如是Memo就会出现读不全的情况。用BDE的Query就不管BLOB还是Memo都可以读全,但BDE的Query有Bug。
谢谢。
还有一问。对于超过10K的文本文件,为何插入数据库时会出现死机现象。
程序如下:
temptext:='update '+tbname+' set '+BlobSL[i]+'=:bmemo '+'where '+pritext;
adoRec.SQL.Add(temptext);
adoRec.Parameters.ParamByName('bmemo').LoadFromFile(BlobFileName,ftBlob);
adoRec.ExecSQL;
adoRec.Close;
当这个文件BlobFileName查过2K大小时,ExecSQL函数就永远不能返回了.不止为什么。
忘高手指教.