无论在哪个数据库里,blob类型的数据和其他类型的数据存储和获取方式是不一样的。
笔者最近在用mysql做开发,期间也遇到了这个问题。经过从网上搜索和查阅,终于把问题搞定了!现整理出来。。。
笔者是想数据库里插入图片。
数据表简写如下:
create table Dish {
int id;
blob photo;
};
下面是从数据库里写的方法:
String filepath = (String)session.getAttribute("file");//这里获得的是用jspsmartupload上传的文件的路径
File file = new File(filepath);
FileInputStream fin = new FileInputStream(file);
dataBS = new blobConn();
con = dataBS.getConn();
String erpsql = "insert into Dish values(?,?)";
PreparedStatement stmt = con.prepareStatement(erpsql);
stmt.setString(2,String.valueOf(id));
stmt.setBinaryStream(3,fin,(int)file.length());//想数据库里插入是很简单的,就一行,但这种方法只有mysql可以用
stmt.executeUpdate();
fin.close();
stmt.close();
con.close();
下面是从数据库里读的方法:
1.BufferedInputStream inputimg = null;
try {
Connection con = sqlDS.getConnection();//简写,获得数据库连接
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select from Dish where id = 11");
if(rs.next()){
java.sql.Blob blob = (java.sql.Blob)rs.getBlob("photo");
input = new BufferedInputStream(blob.getBinaryStream);
}
BufferedImage image = null;
image = javax.imageio.ImageIo.read(input);
ServlerOutputStream sos = response.getOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(sos);
encoder.encode(image);
input.close();
}catch(Exception e) {
e.printStackTrace();
}
2.
if(rs.next()){
res.setContentType ("image/jpeg;charset=GB2312");//HttpServletResponse res
ServletOutputStream out = res.getOutputStream ();
BufferedInputStream jpgData = new BufferedInputStream (rs.getBinaryStream ("photo"));
byte [] buf = new byte [4*1024];
int len;
if(jpgData.available () <= 0x0)//判断数据库里存放图片的字段是否有值,可以进行其他处理
res.sendRedirect ("/images/nophoto.gif");
while((len = jpgData.read (buf, 0, buf.length)) != -1)
out.write (buf, 0, len);
}
3.
if(rs.next()){
res.setContentType("image/jpeg");
ServletOutputStream out=res.getOutputStream();
InputStream in=rs.getBinaryStream("photo");
byte buff[]=new byte[1024];
int i;
while((i=in.read(buff))!=-1){
out.write(buff);
}
in.close();
out.close();
}
分享到:
相关推荐
Mybatis 处理 CLOB、BLOB 类型数据 MyBatis 处理 CLOB、BLOB 类型数据是指在使用 MyBatis ...通过使用 MyBatis 处理 CLOB 和 BLOB 类型数据,可以方便地存储和读取大字段类型的数据,提高应用程序的性能和可扩展性。
在IT领域,数据库管理和应用程序开发是两个至关重要的部分。MySQL是一种广泛应用的关系型数据库管理...熟悉MySQL的BLOB数据类型以及Qt提供的数据库API,可以帮助你有效地处理这些问题,实现稳定、高效的数据库应用。
在 MySQL 中,BLOB 是一种二进制大对象类型,用于存储大型二进制数据,如图像、音频、视频等。BLOB 数据类型可以存储大量的二进制数据,但其长度不能超过 65535 字节。 将 BLOB 转换为文件 将 BLOB 转换为文件可以...
本文将详细介绍如何在JSP页面上实现`BLOB`类型数据的上传,并将其存储到MySQL数据库中。 首先,理解`BLOB`类型:`BLOB`是用于存储非结构化数据的SQL数据类型,它可以存储最大4GB的二进制数据。在Java中,我们使用`...
- **读取并输出Blob数据**:使用Blob对象的`getBinaryStream()`方法获取输入流,将其内容写入ServletOutputStream,从而将文件数据发送到浏览器。 6. **安全和优化**: - **关闭资源**:操作完成后,记得关闭...
在本文中,我们将对 Java 数据类型和 MySql 数据类型进行对应一览,帮助开发者更好地理解和使用这两种类型。 字符串类型 在 Java 中,字符串类型对应的是 java.lang.String 类型。在 MySql 中,字符串类型对应的是...
MySQL中的BLOB类型是用于存储大量二进制数据的字段,比如图像、音频或文档等。BLOB全称为Binary Large Object,它提供了多种子类型,包括TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。这四种类型的区别主要在于它们能够...
在`mysql_blob_tools`中,`main.cpp`可能是一个C++源代码文件,实现了对Blob数据的读取、解析、统计和分析功能。C++是一种强大的编程语言,特别适合处理复杂的数据结构和大型数据集。通过这个工具,用户可以对从...
在MySQL数据库中,Blob是一种特殊的数据类型,用于存储大量的二进制数据,如图片...在实际应用中,可能还需要处理错误,关闭数据库连接,以及优化性能,例如批量处理Blob数据,使用PreparedStatement来防止SQL注入等。
以下将详细讲解如何利用VB来存取数据库中的BLOB数据。 首先,我们需要了解BLOB数据的基本概念。BLOB是数据库管理系统中用来存储大量二进制数据的字段类型,它可以是任何类型的图像、文档或者其他非文本数据。在...
MySQL数据库提供了BLOB数据类型,可以用来存储二进制数据,而存储过程可以用来处理和访问这些二进制数据。存储过程可以将二进制数据分割成多个部分,并将其存储在数据库表中,然后可以通过存储过程来访问和处理这些...
在数据库管理与应用开发中,处理BLOB(Binary Large Object)类型字段是一项常见的需求,尤其是在存储大量二进制数据如图像、音频或视频文件时。本文将深入探讨如何判断一个BLOB字段是否为空,这是一个在数据库操作...
利用Java语言实现PB对Oracle中Blob类型的动态操作 摘要:本文介绍了一种利用Java语言实现PB对...本文提供了一种有效的方法来实现PB对Oracle中Blob类型数据的动态访问,该方法可以广泛应用于各种基于数据库的应用程序。
- 存储机制:MySQL的`TEXT`和`BINARY`系列数据类型通常存储在数据页中,而Oracle的`CLOB`和`BLOB`可以存储在表空间中,允许更大的数据量。 - 索引支持:Oracle支持对`CLOB`和`BLOB`字段建立索引,而MySQL的索引...
本文将详细介绍MySQL中的各种数据类型及其在Java中的对应类型,并解释这些类型的具体含义以及它们在实际应用中的作用。 #### 数据类型对照表解析 ##### 1. VARCHAR (可变长度字符串) **显示长度:** L+N **数据库...
Java 和 MySQL 数据类型之间的对比是理解数据库操作和应用程序开发中数据处理的关键。这两种语言的数据类型在功能和使用上都有所不同,尽管它们都用于存储和处理数据,但各自有着特定的适用场景和特点。 首先,Java...
BLOB 类型是数据库系统中用于存储大量二进制数据的数据类型。在 Java 应用开发中,尤其是使用 ORM 框架如 Hibernate 进行持久化层开发时,如何高效地处理 BLOB 类型字段成为了一个关键问题。 本文档将详细介绍如何...
本示例主要涉及的是如何将图片通过BASE64编码加密后存入数据库的Blob类型字段,并能从数据库中取出这些数据再还原成原始图片。以下是相关知识点的详细说明: 1. **BASE64编码**:BASE64是一种用于将二进制数据转换...
本项目以VC++6.0 MFC为基础,结合ODBC(Open Database Connectivity)技术,实现了将图片数据存储到MySQL数据库的BLOB(Binary Large Object)字段中。下面将详细讲解这个过程涉及的知识点。 首先,理解ODBC。ODBC...