欢迎光临
我们一直在努力

数据库中如何插入修改图片BLOB字段


插入示例

1.
   

利用存储过程进行插入数据


创建存储图片的表


CREATE


TABLE

IMAGE_LOB
(
T_ID
VARCHAR2
(
5
)

NOT


NULL

,
T_IMAGE
BLOB

NOT


NULL

);


创建存储图片的目录,我这里在本地
C


CREATE


OR


REPLACE


DIRECTORY

IMAGES

AS

'C:\'
;


通过存储过程来实现插入


CREATE


OR


REPLACE


PROCEDURE

IMG_INSERT
(
TID
VARCHAR2
,
FILENAME
VARCHAR2
)

AS

F_LOB
BFILE
;

文件类型

B_LOB
BLOB
;


BEGIN


插入空的
blob

EMPTY_BLOB ()


INSERT


INTO

IMAGE_LOB
(
T_ID
,
T_IMAGE
)


VALUES

(
TID
,
EMPTY_BLOB
())

RETURN

T_IMAGE

INTO

B_LOB
;


获取指定目录下的文件

F_LOB:= BFILENAME
(
'IMAGES'
,
FILENAME
);


以只读的方式打开文件

DBMS_LOB
.
FILEOPEN
(
F_LOB
,
DBMS_LOB
.
FILE_READONLY
);


传递对象

DBMS_LOB
.
LOADFROMFILE
(
B_LOB
,
F_LOB
,
DBMS_LOB
.
GETLENGTH
(
F_LOB
));


关闭原始文件

DBMS_LOB
.
FILECLOSE
(
F_LOB
);


COMMIT

;


END

;

/

2.
   

调用存储过程插入图片


call

IMG_INSERT
(
'1'
,
'1.jpg'
);


3.
   

验证结果


select

*

from

IMAGE_LOB
;

 


修改示例

1.
通过过程进行修改


declare

l_bfile
bfile
;

l_blob
blob
;


begin


update

IMAGE_LOB

set

T_IMAGE=empty_blob
()

where

T_ID=1

return

T_IMAGE

into

l_blob
;


图片路径还在
C
盘,通过系统表
SELECT * FROM dba_directories;
查询

l_bfile:=bfilename
(
'IMAGES'
,
'2.jpg'
);


以只读的方式打开文件

dbms_lob
.

open

(
l_bfile
,
dbms_lob
.
file_readonly
);


传递对象

dbms_lob
.
loadfromfile
(
l_blob
,
l_bfile
,
dbms_lob
.
getlength
(
l_bfile
));


关闭原始文件

dbms_lob
.

close

(
l_bfile
);


commit

;


end

;

/

2.
验证结果


select

*

from

IMAGE_LOB
;



赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。