资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

图片如何加入oracle,图片如何加入微信表情包

.net怎样将图片以二进制流的方式存入Oracle数据库里 在以二进制流的方式读取显示 380543828@qq.com 求源码

在oracle中可以使用bolb字段类型进行二进制流的存储

创新互联是一家专业提供红旗企业网站建设,专注与成都网站建设、网站制作、H5开发、小程序制作等业务。10年已为红旗众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。

Java代码:

Oracle中插入图片并显示(用BLOB类型)

要在oracle里面存入图片 用 blob类型

首先在数据库里建立:

--连接到管理员

conn sys/tbsoft as sysdba;

--为scott用户授权

grant create any directory to scott;

--回到scott用户

conn scott/tiger;

--创建存储图片的表

CREATE TABLE IMAGE_LOB (T_ID VARCHAR2 (5) NOT NULL,T_IMAGE BLOB NOT NULL);

--创建存储图片的目录

CREATE OR REPLACE DIRECTORY IMAGES AS 'C:\picture';

--在c:下自己建一个叫picture的文件夹

CREATE OR REPLACE PROCEDURE IMG_INSERT (TID VARCHAR2,FILENAME VARCHAR2) AS

F_LOB BFILE;--文件类型

B_LOB BLOB;

BEGIN

iNSERT INTO IMAGE_LOB (T_ID, T_IMAGE)

VALUES (TID,EMPTY_BLOB ()) RETURN T_IMAGE INTO B_LOB;

--插入空的blob

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;

/

--在C:\picture下放一张图片1.gif

--将该图片存入表

call IMG_INSERT('1','1.gif');

然后创建一个web项目 连接数据库后 创建一个BlobDAO类 用来取出表中的blob类型图片

Java代码 收藏代码

public class BlobDAO {

private static final BlobDAO instance = new BlobDAO();

private Connection conn = null;

private BlobDAO() {

}

public static BlobDAO getInstance() {

return instance;

}

private void initConn() {

conn = DBAccess.getInstance().getConn();

}

public byte[] getImage(String imgname) {

BufferedInputStream ins;//取得BLOB的IO流

byte[] bt = null;

initConn();

Blob bo = null;

PreparedStatement ps = null;

ResultSet rs = null;

String sql = "select T_IMAGE from IMAGE_LOB where t_id=?";

try {

ps = conn.prepareStatement(sql);

ps.setString(1, imgname);

rs = ps.executeQuery();

if (rs.next()) {

bo = rs.getBlob("T_IMAGE");

try {

ins = new BufferedInputStream(bo.getBinaryStream());

int bufferSize = (int) bo.length();//取得BLOB的长度

bt = new byte[bufferSize];

try {

ins.read(bt, 0, bufferSize);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//建立字节缓存

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

try {

rs.close();

ps.close();

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return bt;

}

}

在action里面调用getImage()方法并显示图片在页面上

Java代码 收藏代码

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) {

// TODO Auto-generated method stub

BlobDAO blobDAO = BlobDAO.getInstance();

byte[] bs = blobDAO.getImage("1");

try {

response.getOutputStream().write(bs);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}

添加图片到数据库

请在c盘下放入图片--c:\\4.gif

Java代码 收藏代码

public void savaImg(String imgId) {

//传的是存入数据库图片的id

initConn();

Statement st = null;

BLOB blob = null; //图片类型

OutputStream outputStream = null; //输出流

File file = null; //文件

InputStream inputStream = null; //输入流

ResultSet rs = null;

try {

conn.setAutoCommit(false); //事物由程序员操作

st = conn.createStatement();

st.executeQuery("insert into IMAGE_LOB values('"+ imgId +"',empty_blob())");

rs = st.executeQuery("select T_IMAGE from IMAGE_LOB where t_id='"+ imgId +"' for update");

if (rs.next()) {

blob = (BLOB) rs.getBlob(1);

outputStream = blob.getBinaryOutputStream();

file = new File("c:\\4.gif");

inputStream = new FileInputStream(file);

byte[] b = new byte[blob.getBufferSize()];

int len = 0;

while ((len = inputStream.read(b)) != -1) {

System.out.println(len);

outputStream.write(b, 0, len);

}

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

try {

inputStream.close();

outputStream.flush();

outputStream.close();

rs.close();

st.close();

conn.commit();

conn.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

我要保存一张图片到Oracle数据库里,请问有哪些步骤,具体是怎样实现的,我用的ssh三大框架都是低版本的。

LZ是想保存图片路径 还是想以2进制的形式把这个图片保存到Oracle?

用clob类型。

oracle 用insert可以直接在表中插入图片吗?(字段类型为 blob)

你baidu一下 “向blob插入图片” 会获得好多结果,比如

将图片插入到BLOB类型的字段中

建立一个表:create table a(a blob);

建立一个目录:create directory tmp as 'e:\';

建立一个PL/SQL块:

declare

b_file bfile;

b_lob blob;

begin

insert into a(a) values(empty_blob()) return a into b_lob;

--为了使PL/SQL编译成功,必须先为该列插入一个empty_blob() 值,return a into b_lob将该列与一个blog类型的变量绑定在一起,以后只要为b_lob赋值,即等于将该值插入了表中。

b_file:=bfilename('tmp','filename.jpg');

--tmp是建立的文件所在的目录,filename.jpg是文件名;将文件转换为bfile类型

dbms_lob.open(b_file,dbms_lob.file_readonly);--将b_file 以只读的方式打开

dbms_lob.loadfromfile(b_lob,b_file,dbms_lob.getlength(b_file));-- 将b_file中的内容转换到b_lob中

dbms_lob.close(b_file);

commit;

end;


分享标题:图片如何加入oracle,图片如何加入微信表情包
网站地址:http://www.cdkjz.cn/article/hshopg.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220