在delphi中如何向oracle中存入照片?

siwuge 2007-06-21 09:06:48
我在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;
...全文
350 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjp0214 2007-08-05
  • 打赏
  • 举报
回复
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;
lengyuxing 2007-07-31
  • 打赏
  • 举报
回复
用文件流写入
siwuge 2007-07-29
  • 打赏
  • 举报
回复
to 78hgdong(赤脚):
我现在就是这样做的,可我想直接存入jpg文件,bmp文件太大,占用空间大不说,存入时间也长。如果数量多的话怎么受得了啊。
78hgdong 2007-07-28
  • 打赏
  • 举报
回复
把*.jpg图片转换为*.bmp格式再存入BLOG字段就OK了
siwuge 2007-07-09
  • 打赏
  • 举报
回复

with adoquery1 do
begin
close;
sql.Clear;
sql.Add('select * from photo1');
open;
append;
if OpenPictureDialog1.FileName <> '' then
fieldbyname('shbzh').AsString:=TRIM(edit1.Text);
TblobField(FieldByName( 'IMAGE1' )).LoadFromFile(OpenPictureDialog2.FileName);
post;
这样可以,但只能存入*.bmp文件,不能存入*.jpg文件。为什么?image1是long row型
siwuge 2007-07-09
  • 打赏
  • 举报
回复

with adoquery1 do
begin
close;
sql.Clear;
sql.Add('select * from photo1');
open;
append;
if OpenPictureDialog1.FileName <> '' then
fieldbyname('shbzh').AsString:=TRIM(edit1.Text);
TblobField(FieldByName( 'IMAGE1' )).LoadFromFile(OpenPictureDialog2.FileName);
post;
这样可以,但只能存入*.bmp文件,不能存入*.jpg文件。为什么?image1是long row型
siwuge 2007-07-05
  • 打赏
  • 举报
回复
提示:stream read error.
为什么?
jackietdcn 2007-06-29
  • 打赏
  • 举报
回复
:hongqi162(失踪的月亮)
up
hanwen 2007-06-29
  • 打赏
  • 举报
回复
ls d ls可以啊
Harryfin 2007-06-22
  • 打赏
  • 举报
回复
不是用Assign,Assign是把一个对象copy给另外一个对象,你把Tgraphic copy给TField,是错误的。

你改成这样试试?
TBlobField(FieldByName( 'IMAGE1')).LoadFromFile(OpenPictureDialog1.FileName);
hongqi162 2007-06-22
  • 打赏
  • 举报
回复
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;

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧