如何在数据库中保存图片?找到的代码有问题,请高手指点一下,感激!
Var AbitMap:TBitMap;
st:TStringStream;
begin
try
ABitMap:=TBitMap.Create;
aBitMap.LoadFromFile('D:\SAMPLE.BMP');
st:=TStringStream.create('');
aBitMap.SaveToStream(st);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('INSERT INTO Sys_user(USER_ID,USER_PIC) VALUES(''AA'',:pic)');
Query1.ParamByName('PIC').AsBlob:=st.DataString;
Query1.ExecSQL;
finally
abitmap.Free;
st.Free;
End;
上面的代码会出现死掉的情况(窗口就不能动了)
用 SELECT DBMS_LOB.GETLENGTH(USER_PIC) FROM SYS_USER;执行结果为 0,插入的纪录成功了
可是blob字段User_Pic长度怎么是0呢?
保存于显示数据库中的图片究竟该如何做?请高手帮忙。希望把Query或者Table的重要属性也要说明
一下(我很菜)
问题点数:20、回复次数:3Top
1 楼chengtwn(漠孤烟)回复于 2004-09-01 15:38:52 得分 10
你参考一下吧,ACCESS的数据库,图片字段高为“OLE 对象”,能保存,但我不知道怎么查询显示出来,哪位大虾能告知,一并不胜感激!!
procedure Tfrm_Main.BtnSaveToDBClick(Sender: TObject);
var
ext:string;
begin
if image1.Picture.Graphic <>nil then
begin
try
DM.ADOConnection.BeginTrans ;
DM.ADODataSet_classMate.Edit ;
DM.ADODataSet_classMate.FieldByName('相片').Assign(image1.Picture.Graphic);
//以下记录保存到数据库的图像格式
ext:=extractfileext(openpicturedialog1.FileName);
if uppercase(ext) = '.BMP' THEN
DM.ADODataSet_classMate.FieldByName('isbmp').Value :=1
ELSE IF (UPPERCASE(EXT) = '.JPEG') OR (UPPERCASE(EXT) = '.JPG') THEN
DM.ADODataSet_classMate.FieldByName('isbmp').Value :=0;
DM.ADODataSet_classMate.Post ;
DM.ADOConnection.CommitTrans ;
except
DM.ADOConnection.RollbackTrans ;
showmessage('图片保存失败!');
end;//try
end;
end;Top
2 楼hxdarkhorse(都市狼)回复于 2004-09-01 16:39:25 得分 10
var picname,exename:string;
jpegimage:TJPEGImage;
begin
if not (adoquery1.State in [dsinactive]) then //写模式
begin
if OpenPictureDialog1.Execute then
begin
picname:=OpenPictureDialog1.FileName;
exename:=ExtractFileExt(picname);
if (UpperCase(exename)='.JPG')or(UpperCase(exename)='.JPEG') then
begin
jpegimage:=TJPEGImage.Create;
try
jpegimage.LoadFromFile(picname);
adoquery1.edit;
DBImage1.Picture.Graphic.Assign(jpegimage);
adoquery1.Post;
finally
jpegimage.Free;
end;
end
else
begin
adoquery1.Edit;
adoquery1DSDesigner13.LoadFromFile(OpenPictureDialog1.FileName);
adoquery1.Post;
end;
end;
end;
Top
3 楼taimier()回复于 2004-09-01 17:28:13 得分 0
本人有幼儿园收费系统项目,希望和各位delphi精英合作。特别是幼儿园考勤方面的,需要会delphi开发考勤机控制方面的人合作。电邮:taimier@yahoo.com.cn qq 30770898Top
相关问题
- 有关数据库连接问题,急,希望高手指点,不胜感激!
- 能不能将XML代码写入数据库的某个字段,在将数据库字段当中的XML代码读出?请求指点!
- 数据库学习指点
- 从数据库中下载图片的问题。请各位指点一下,感激不尽,见者有分!
- servler代码移植后,连接数据库报no suitable driver的错,请大家指点
- 大家帮忙看看这段用ADO连接数据库的代码,指点小弟一下!谢谢!
- 数据库的问题,请大家指点(第一个解决问题并提供代码者,送分20)。
- 用dbexpress组件连接数据库,怎样用代码设置SQLConnection?高手指点!
- 代码创建数据库
- 100分求连接oracle数据库的自写分页代码或算法,感激不尽!




