数据库是Oracle 8.16,客户端用的是BDE中的Oracle驱动,连接到数据库
保存照片代码如下:Query1.Close();
Query1.SQL.Clear();
Query1.SQL.Add('SELECT * FROM MyTable');
Query1.RequestLive := true;
Query1.Open;Query1.Insert;
Query1.FieldByName('NAME').AsString := 'ddddd';
TBlobField(Query.FieldByName('PHOTO')).LoadFromFile('C:\temp,jpg');
Query1.Post;程序运行Post 时报错: "Ora-22990: Lob 定位器无法扩展展事物处理" 怎么回事啊?
保存照片代码如下:Query1.Close();
Query1.SQL.Clear();
Query1.SQL.Add('SELECT * FROM MyTable');
Query1.RequestLive := true;
Query1.Open;Query1.Insert;
Query1.FieldByName('NAME').AsString := 'ddddd';
TBlobField(Query.FieldByName('PHOTO')).LoadFromFile('C:\temp,jpg');
Query1.Post;程序运行Post 时报错: "Ora-22990: Lob 定位器无法扩展展事物处理" 怎么回事啊?
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into Pic values(.....,:Pic,...)');
.................
ADOQuery1.Parameters.ParamByName('Pic').Assign(Image1.Picture.Bitmap);
.................
ADOQuery1.ExecSQL;
提取:
Image1.Picture.Bitmap.Assign(TBLOBField(ADOQuery1.Parameters.ParamByName('Pic')))
var
imStream:TMemoryStream;
imPicture:TJPEGImage;
begin
if OpenPictureDialog1.Execute then
begin
image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
imStream := TMemoryStream.Create;
imPicture := TJpegImage.Create;
imPicture.Assign(image1.Picture.Graphic);
imPicture.SaveToStream(imStream);
AdoQuery1.Close;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add('insert into your_table values(:name, :image)');
AdoQuery1.Parameters.ParamByName('name').Value := Edit1.Text;
AdoQuery1.Parameters.ParamByName('image').LoadFromStream(imstream,ftBlob);
AdoQuery1.ExecSQL;
AdoQuery1.Close;
FreeAndNil(imPicture);
FreeAndNil(imStream);
end;
end;
用database的事务来保存修改
然后在保存时:
try
database1.StartTransaction;
Query1.post;
Query1.ApplyUpdates;
database1.commit;
Except
end;