BLOB问题,请大虾们帮帮忙!(急) (50分)

  • 主题发起人 主题发起人 覆雨翻云
  • 开始时间 开始时间

覆雨翻云

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟用Stream实现将一文本文件存入BLOB字段(Oracle),源代码如下
mystream:=TFileStream.Create('c:/test.txt',fmopenread);
try
TBlobField(ClientDataSet1.FieldByName('TXT')).LoadFromStream(mystream);
finally
ClientDataSet1.ApplyUpdates(-1);
mystream.Free;
end;
不知什么原因,数据好象存不进去,我用SQL Explorer查看,提示
General SQL error.
ORA-00936:missing expression
deltails显示为 BDE Error: 13059 [$33][$3]
General SQL error.
Server Error: 936
ORA-00936:missing expression
是不是中间层设置有问题(我怀疑)?小弟是菜鸟,初学DELPHI,请各位大虾多多指教!
 
http://www.grhunter.com/sub2.htm有例子下载。[:)]
 
如果你的文件大于32k的话,要设置一下bde
 
TO: Celestial dog
文件肯定大于32K,请问应怎样设置BDE? THANKS.

我重建了一次表,以上问题解决,可以看到数据存入了BLOB字段,但显示不出来,我用
以下代码显示,请大虾看看问题出在哪儿?

TBlobField(ClientDataSet1.FieldByName('txt')).SaveToFile('c:/sxg.txt');
mystream:=TFileStream.Create('c:/sxg.txt',fmopenread);
try
Memo1.Lines.LoadFromStream(mystream);
finally
mystream.Free;
end;

我想让BLOB(已知内容为文本)显示在 memo 中
 
测试已知下句有问题:
TBlobField(ClientDataSet1.FieldByName('TXT')).SaveToFile('c:/sxg.txt');
可以自动在C盘根目录下新建文件 sxg.txt ,但其内容为空,也就是说字段 TXT(BLOB字段)
的内容没有从数据库中取出;
请教各位大虾,如何将 BLOB字段中的内容(已知为文本)显示出来
 
m.position:=0;
 
提取TBlob字段:
Image1.Picture.Bitmap.Assign(TBLOBField(Table1.Fields[1]))

在TBlob字段中存储
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('insert into Pic values(:Pic)');
Query1.Parameters.ParamByName('Pic').Assign(Image1.Picture.Bitmap);
Query1.ExecSQL;
 
1.改应用层TDatebase控件Params属性里的BDE信息
2.可能你没存成功(try SaveToFile('c:/sxg');)
你可以用webbrowser显示
 
我也遇到这问题,关注
 
我也遇见这个问题,通过sql,数据库中可以存入blob字段,但无法取出该字段,dataset
每次激活都会显示 invalid data type,bde error10000.哪里出了问题,赐教,感激不胜!!
 
存入的文件>32k,取出来大多数打不开的,除了jpg个别,你可以用jpg格式的文件试验一下,
所写取出的代码是否正确;

另外,如何去掉>32k的限制,我没有修改bde,只是将query的requestlive改成true,就解决了,
可以试试看
 
兄弟们:她用ClientDataset,不同的~~
 
to trackboy:
我只存一句话也显示不出来,说明不是大于32K的问题;我测试问题出在
TBlobField(ClientDataSet1.FieldByName('txt')).SaveToFile('c:/sxg.txt');
这一句,但不知该怎么改,我试用 SaveToStream 方法,运行时提示读内存错误,
该如何解决?
 
有同感﹐關注﹗
 
我测试了一下,没有问题呀,是不是别的原因引起的,检查一下代码.
 
to trackboy:
hi,请问你是怎么测试的,可以将测试代码贴出来吗?
现已确定存入,请问如何将 BLOB字段中的内容(已知为文
本)显示在 memo 中;或者存入一文本文件?
 
其实我就是用你的代码测试的
服务端:database1,table1,datasetprovider1
客户端:dcomconnection1,clientdataset1,datasource1
数据库:sybase

procedure TForm3.Button1Click(Sender: TObject);
var
mystream:Tfilestream;
begin

TBlobField(ClientDataSet1.FieldByName('data')).SaveToFile('c:/helptest.txt');
mystream:=TFileStream.Create('c:/helptest.txt',fmopenread);
try
Memo1.Lines.LoadFromStream(mystream);
finally
mystream.Free;
end;

代码没有什么问题,不知道为什么你会出错.

 
to trackboy:
我用的是ORACLE数据库,也许和这有关吧,我再试试
 
还是不行,请各位帮忙解决,很急的,分不够可以再加!!!
 
后退
顶部