在delphi中如何向oracle中存入照片?
我在oracle中创建了一个含blob字段的表,用来存照片,可向中保存时保存不进去。
procedure TForm1.Button2Click(Sender: TObject);
var graphic1:Tgraphic;
begin
graphic1:=graphic1.Create;
graphic1.LoadFromFile(OpenPictureDialog1.FileName);
with adoquery1 do
begin
open;
INSERT;
fieldbyname( 'id ').AsString:=TRIM(edit1.Text);
FieldByName( 'IMAGE1 ').Assign(graphic1);
//TblobField(FieldByName( 'IMAGE1 ' )).SaveToFile(OpenPictureDialog1.FileName);
POST;
end;
graphic1.Free
end;
[解决办法]
不是用Assign,Assign是把一个对象copy给另外一个对象,你把Tgraphic copy给TField,是错误的。
你改成这样试试?
TBlobField(FieldByName( 'IMAGE1 ')).LoadFromFile(OpenPictureDialog1.FileName);
[解决办法]
create table t_blob(cblob blob);
/
begin
self.ADODataSet1.Close;
self.ADODataSet1.CommandText:= 'select * from t_blob ';
self.ADODataSet1.Open;
self.ADODataSet1.Append;
TBlobField(self.ADODataSet1.FieldByName( 'cBlob ' )).LoadFromFile( 'D:\41207.JPG ' );
self.ADODataSet1.Post;
end;
[解决办法]
:hongqi162(失踪的月亮)
up
[解决办法]
ls d ls可以啊
[解决办法]
把*.jpg图片转换为*.bmp格式再存入BLOG字段就OK了
[解决办法]
用文件流写入
[解决办法]
var
ms: TMemoryStream;
begin
WaitForm.pdShowProgress(cSMPhoto);
ms := TMemoryStream.Create;
dbimgPhoto.Picture.Graphic.SaveToStream(ms);
ms.Position := 0;
with TADOQuery.Create(nil) do
try
Connection := AdodsOp.GetADOConn;
1: begin //µÚÒ»´ÎɨÃè
SQL.Add('INSERT INTO VW_DA_RYZPB0(GRID00,RYZPGS,RYZP00,JBR000,JBRQ00) ');
SQL.Add('VALUES(:GRID00,:RYZPGS,:RYZP00,:JBR000,:JBRQ00)');
end;
Parameters.ParamByName('GRID00').Value := Trim(edtGRID00.Text);
Parameters.ParamByName('RYZPGS').Value := edtRYZPGS.Text;
Parameters.ParamByName('RYZP00').LoadFromStream(ms, ftDBaseOle);
Parameters.ParamByName('JBR000').Value := Trim(gUserInfo.vUserName);
Parameters.ParamByName('JBRQ00').Value := gSysInfo.PO_SYSDATE;
ExecSQL;
finally
Free;
ms.Free;
WaitForm.pdCloseProgress;
end;