//打开图像
procedure TForm1.Button1Click(Sender: TObject);
begin
opendialog1.execute ;
Image1.picture.loadfromfile(opendialog1.filename);
end;
//保存图像到oracle数据库
procedure TForm1.Button2Click(Sender: TObject);
var
picture : TPicture ;
begin
picture := TPicture.Create ;
picture.LoadFromFile(opendialog1.filename);
query1.DatabaseName := Database1.DatabaseName ;
query1.Close;
query1.SQL.Clear ;
query1.SQL.Text := 'insert into TB_CS_PIC(CS_ID,CS_PIC) VALUES (:CS_ID,:CS_PIC)';
query1.ParamByName('CS_ID').asFloat:= 101 ;
query1.ParamByName('CS_PIC').asSign(picture);
try
query1.ExecSql ;
except
end;
query1.Close;
query1.Free ;
picture.Free ;
end;
//从oracle数据库中读取图像
procedure TForm1.ReadClick(Sender: TObject);
var
uQuery : TQuery ;
begin
uQuery := TQuery.Create(Application);
try
with uQuery do
begin
DataBaseName := Database1.DatabaseName ;
Close ;
Sql.Clear ;
Sql.Text := 'SELECT CS_PIC FROM TB_CS_PIC WHERE CS_ID = 66 ' ;
try
Open ;
Image1.Picture.Bitmap.Assign(TBlobField(FieldByName('CS_PIC'))) ;
Except
end;
end;
finally
uQuery.Close;
uQuery.Free ;
end;
end;出现的问题是:当图像只有几k是,保存和读取都是正常的,但是如果大一点的话,从oracle数据库中读出来的是图像是一片黑,不知是保存的问题还是读取的问题,请高手指教,不胜感激。。
procedure TForm1.Button1Click(Sender: TObject);
begin
opendialog1.execute ;
Image1.picture.loadfromfile(opendialog1.filename);
end;
//保存图像到oracle数据库
procedure TForm1.Button2Click(Sender: TObject);
var
picture : TPicture ;
begin
picture := TPicture.Create ;
picture.LoadFromFile(opendialog1.filename);
query1.DatabaseName := Database1.DatabaseName ;
query1.Close;
query1.SQL.Clear ;
query1.SQL.Text := 'insert into TB_CS_PIC(CS_ID,CS_PIC) VALUES (:CS_ID,:CS_PIC)';
query1.ParamByName('CS_ID').asFloat:= 101 ;
query1.ParamByName('CS_PIC').asSign(picture);
try
query1.ExecSql ;
except
end;
query1.Close;
query1.Free ;
picture.Free ;
end;
//从oracle数据库中读取图像
procedure TForm1.ReadClick(Sender: TObject);
var
uQuery : TQuery ;
begin
uQuery := TQuery.Create(Application);
try
with uQuery do
begin
DataBaseName := Database1.DatabaseName ;
Close ;
Sql.Clear ;
Sql.Text := 'SELECT CS_PIC FROM TB_CS_PIC WHERE CS_ID = 66 ' ;
try
Open ;
Image1.Picture.Bitmap.Assign(TBlobField(FieldByName('CS_PIC'))) ;
Except
end;
end;
finally
uQuery.Close;
uQuery.Free ;
end;
end;出现的问题是:当图像只有几k是,保存和读取都是正常的,但是如果大一点的话,从oracle数据库中读出来的是图像是一片黑,不知是保存的问题还是读取的问题,请高手指教,不胜感激。。
打开你的DBE Administrator管理器-->Configuration页-->展开Configuration->Drivers-->Native-->Oracle,点到Oracle上,右边会出现一系列的属性,你可以修改Blob Size属性为你需要的大小 ,然后再重新编译你的程序就OK了!