在实际开发中,我们有时需要将二进制流存储到数据库中,例如将图片、视频等文件储存到数据库中。Java提供了多种储存二进制流的方式,下面将介绍如何利用Java进行二进制流储存于数据库中的操作。
网站建设公司,为您提供网站建设,网站制作,网页设计及定制网站建设服务,专注于企业网站制作,高端网页制作,对服务器租用等多个行业拥有丰富的网站建设经验的网站建设公司。专业网站设计,网站优化推广哪家好,专业营销推广优化,H5建站,响应式网站。
1.利用JDBC API储存二进制流
JDBC API提供了储存二进制流的方法,可以通过执行SQL语句完成二进制流的储存操作。
以下是Java通过JDBC API储存二进制流的样例代码:
“`java
try{
String url = “jdbc:mysql://localhost:3306/test”;
String user = “root”;
String password = “blog”;
Connection connection = DriverManager.getConnection(url, user, password);
String sql = “INSERT INTO image(id, data) VALUES(?, ?)”;
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, 1);
File file = new File(“test.png”);
FileInputStream inputStream = new FileInputStream(file);
statement.setBinaryStream(2, inputStream, inputStream.avlable());
int result = statement.executeUpdate();
System.out.println(result);
statement.close();
connection.close();
}catch(Exception e){
e.printStackTrace();
}
“`
在该样例中,我们先创建了一个新的数据连接`connection`,然后用`PreparedStatement`对象来执行插入语句。在插入语句中,通过`setInt`方法设置ID,通过`setBinaryStream`方法设置二进制流,并执行SQL语句。
2. 利用Hibernate 储存二进制流
如果你使用Hibernate ORM框架,那么可以很方便地储存二进制流到数据库中。Hibernate API内置了对二进制流数据类型的支持,只需要在实体类中添加`@Lob`注解即可。
以下是Hibernate ORM框架储存二进制流的样例代码:
“`java
@Entity
@Table(name = “image”)
public class Image{
@Id
private int id;
@Lob
private byte[] data;
// getters and setters
}
“`
在该实体类中,通过`@Lob`注解将属性`data`设置成二进制流类型,可以让Hibernate自动将其映射到数据库中的BLOB类型。这种方法不需要编写SQL语句,插入数据时直接通过`session.save`方法实现即可。
3. 利用Spring JDBC 储存二进制流
Spring JDBC也提供了支持二进制流储存的API,通过JdbcTemplate对象可以完成二进制流与数据库的交互。
以下是Spring JDBC中储存二进制流的样例代码:
“`java
@Autowired
JdbcTemplate jdbcTemplate;
public void updateAvatar(int userId, InputStream avatar){
jdbcTemplate.update(
“UPDATE user SET avatar=? WHERE id=?”,
new Object[] { avatar, userId },
new int[] { Types.BLOB, Types.INTEGER }
);
}
“`
在该样例中,我们通过`jdbcTemplate.update`更新语句将二进制流写入数据库中,在更新参数中需要指定类型为BLOB。这种方法比较简单,并且不需要编写SQL语句。
:
以上就是Java如何储存二进制流于数据库的操作,可以根据实际情况选择适合自己的方法。无论是JDBC API、Hibernate ORM框架还是Spring JDBC,都提供了方便快捷的API让我们可以很容易地储存数据到数据库中。深入理解这些API的使用方式,能够大大提高Java在实际项目中的开发效率。
成都网站建设公司-创新互联,建站经验丰富以策略为先导10多年以来专注数字化网站建设,提供企业网站建设,高端网站设计,响应式网站制作,设计师量身打造品牌风格,热线:028-86922220oracle如下
数据库中提供了两种字段类型 Blob 和 Clob 用于存储大型字符串或二进制数据(如图片)。
Blob 采用单数散字节存储,适合保存二进制数据,如图片文件。
Clob 采用多字节存储,适合保存大型文本数据。
首先创建一橘枝个空 Blob/Clob 字段,再从这个空 Blob/Clob字段获取游标,例如下面的代码:
PreparedStatement ps = conn.prepareStatement( ” insert into PICTURE(image,resume) values(?,?) ” );
// 通过oralce.sql.BLOB/CLOB.empty_lob()构造空Blob/Clob对象
ps.setBlob( 1 ,oracle.sql.BLOB.empty_lob());
ps.setClob( 2 ,oracle.sql.CLOB.empty_lob());
ps.excuteUpdate();
ps.close();
// 再次对读出Blob/Clob句柄
ps = conn.prepareStatement( ” select image,resume from PICTURE where id=? for update ” );
ps.setInt( 1 , 100 );
ResultSet rs = ps.executeQuery();
rs.next();
oracle.sql.BLOB imgBlob = (oracle.sql.BLOB)rs.getBlob( 1 );
oracle.sql.CLOB resClob = (oracle.sql.CLOB)rs.getClob( 2 );
// 将二进制数据写入Blob
FileInputStream inStream = new FileInputStream( ” ” );
OutputStream outStream = imgBlob.getBinaryOutputStream();
byte buf = new byte ;
int len;
while (len = inStream.read(buf) > 0 ) {
outStream.write(buf, 0 ,len);
}
inStream.close();
outStream.cloese();
// 将字符串写入Clob
resClob.putString( 1 , “圆毕敏 this is a clob ” );
// 再将Blob/Clob字段更新到数据库
ps = conn.prepareStatement( ” update PICTURE set image=? and resume=? where id=? ” );
ps.setBlob( 1 ,imgBlob);
ps.setClob( 2 ,resClob);
ps.setInt( 3 , 100 );
ps.executeUpdate();
ps.close();
从数据库中得到Blob/Clob,然蠢桐察后得到带茄InputStream,直轮孙接给response.getOutputStream() 输出就可以
关于java 如何将二进制的流保存到数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
创新互联【028-86922220】值得信赖的成都网站建设公司。多年持续为众多企业提供成都网站建设,成都品牌建站设计,成都高端网站制作开发,SEO优化排名推广服务,全网营销让企业网站产生价值。
网站标题:Java如何储存二进制流于数据库?(java如何将二进制的流保存到数据库)
文章出自:http://www.shufengxianlan.com/qtweb/news47/225347.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联