with ClientDataSet do
begin
Append;
TBlobField(FieldByName('fieldname')).LoadFromFile(filename);
ApplyUpdates(0);
end;
begin
Append;
TBlobField(FieldByName('fieldname')).LoadFromFile(filename);
ApplyUpdates(0);
end;
可以处理任何类型的文件
procedure SavePicture
var
FileStream: TFileStream;
BlobStream:TStream;
i:integer;
begin
if OpenDialog1.Execute then
begin
with OpenDialog1.Files do
begin
for I := 0 to Count - 1 do
begin
FileStream := TFileStream.Create(Strings[I], fmOpenRead);
AdoPicD.Append;//数据表
BlobStream := AdoPicD.CreateBlobStream(字段对象, bmReadWrite);
BlobStream.Seek(0,soFromBeginning);
BlobStream.CopyFrom(FileStream,FileStream.size); FileStream.Free;
BlobStream.Free;
ADOPicD.Post;
end; end;
end;
end;
procedure TfrmMain.nSendReferClick(Sender: TObject);
var
mm:TMemoryStream;
begin
try
mm:=TMemoryStream.Create;
try
mm.LoadFromFile(openDialog1.FileName);
mm.Position:=0;
with clientDataSet1 do
begin
Append;
TBlobField(FieldByName('fieldname')).LoadFromFile(filename);
ApplyUpdates(0);
end;
messagebox(handle,'报请成功!','示',MB_OK+MB_ICONINFORMATION);
finally
mm.Free;
end;
except
raise;
end;
end;
还有Blob的字段确实在ADO连接时有问题,因为Blob是Oracle8新支持的,所以相关的ADO引擎可能还跟不上,如果用老的long raw就没问题。
http://www.csdn.net/expert/topic/765/765494.xml?temp=.8706934
http://www.csdn.net/expert/topic/768/768242.xml?temp=.4995539to nylp (混子刘) :
您的問題解決了嗎??
我已经搞定。
原来我在中间层用的是adoQuery,无论怎么搞都搞不定。
现在只需将adoQuery换为adoTable就可以了。(我一向反对用这种呆板的东西的。)
相关代码:
with clientDataSet1 do
begin
Append;
TBlobField(FieldByName('fieldname')).LoadFromFile(filename);
ApplyUpdates(0);
end;
server端; ADOConnection+adoTable+DataSetProvider
client端; SocketConnection+ClientDataSet組件的屬性怎麼設置呀?? 讓這部分代碼可以直接用到字段'fieldname'速盼回複!!!!!!
http://www.csdn.net/expert/topic/768/768242.xml?temp=.9024927adoTable與表名'tab_file'關聯,其他組件的屬性都不設的話.
執行到 ApplyUpdates(0);
在事件
procedure TDM2.CDS_FileContReconcileError(DataSet: TClientDataSet;
E: EReconcileError; UpdateKind: TUpdateKind;
var Action: TReconcileAction);
begin
ShowMessage(E.Message+' zfzzfz 2 ');
end;
我的程序報錯'提供不一致或不完全的資訊導致參數物件不適當被拒.'
怎麼解決???