插入图片:
注意如果mysql是gbk编码的要先把mysql的字符集设置Latin1,输入完图片后再设回来
import java.sql.*;
import java.io.*;
class InsertPhoto{
public static void main(String[] args) throws Exception{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/tjphotodb?user=root&password=root");
File f = new File("c:/test.jpg");
FileInputStream fis = new FileInputStream(f);
String sql = "insert into tjphotodb.t_photo(alarmid,photoblob) values(0,?)";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setBinaryStream(1,fis,(int)f.length());
pstmt.executeUpdate();
fis.close();
pstmt.close();
con.close();
}
}
读取并显示图片:
后台用一个servlet来读取,然后让前台的jsp显示
后台servlet:
public static InputStream query_getPhotoImageBlob(int id){
String sql = "select photoblob from "+DB_TABLE_PHOTO+" where id="+id;
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
InputStream result = null;
try {
con = getConnection();
stmt = con.createStatement();
rs = stmt.executeQuery(sql);
if (rs.next())
result = rs.getBlob("photoblob").getBinaryStream();
} catch (SQLException e) {
// TODO: handle exception
System.err.println(e.getMessage());
}finally{
closeConnection(rs,stmt,con);
}
return result;
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
if (request.getParameter("id") != null){
response.setContentType("image/jpeg");
InputStream is = DBUtil.query_getPhotoImageBlob(Integer.valueOf(request.getParameter("id")).intValue());
if (is != null){
try {
is = new BufferedInputStream(is);
BufferedImage bi = ImageIO.read(is);
OutputStream os = response.getOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);
encoder.encode(bi);
os.close();
is.close();
} catch (IOException e) {
// TODO: handle exception
System.err.println(e.getMessage());
}
}
}
}
前台jsp:
<img style="width:320px;height:240px" src="<%=helper.HTMLHelper.getProjectPath(request) %>/servlet/genImage?id=<%=request.getParameter("id")%>"/>
import java.io.*;
import java.sql.*;
public class DBTest {
public static void main(String[] args) {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/upload?useUnicode=true&characterEncoding=Big5";
String user = "caterpillar";
String password = "123456";
try {
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, user, password);
File file = new File("./logo_phpbb.jpg");
int length = (int) file.length();
InputStream fin = new FileInputStream(file);
PreparedStatement pstmt = conn.prepareStatement(
"INSERT INTO files VALUES(?, ?)");
pstmt.setString(1, "Logo");
pstmt.setBinaryStream (2, fin, length);
pstmt.executeUpdate();
pstmt.clearParameters();
pstmt.close();
fin.close();
Statement stmt = conn.createStatement();
ResultSet result = stmt.executeQuery("SELECT * FROM files");
result.next();
String description = result.getString(1);
Blob blob = result.getBlob(2);
System.out.println("描述:" + description);
FileOutputStream fout = new FileOutputStream("./logo_phpbb_2.jpg");
fout.write(blob.getBytes(1, (int)blob.length()));
fout.flush();
fout.close();
stmt.close();
conn.close();
}
catch(ClassNotFoundException e) {
System.out.println("找不到驱动");
e.printStackTrace();
}
catch(SQLException e) {
e.printStackTrace();
}
catch(IOException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
CLOB、BLOB 与 CLOB 与 BLOB 的区别 CLOB(Character Large OBject)是一种数据库类型,用于存储大型字符对象。它是 SQL 类型,用于存储字符大对象(Character Large Object),将字符大对象存储为数据库表某一行中...
在这个场景中,我们关注的是如何使用Java Server Pages(JSP)来操作MySQL数据库中的Blob(Binary Large Object)字段,这是一个用于存储大容量二进制数据如图片、文档或音频文件的特殊字段类型。以下是关于这个主题...
Blob(Binary Large Object)在数据库中用于存储二进制大对象,如图片、音频或视频文件等...源码中可能包含了类似的实现,通过解压提供的"向数据库插入blob数据实例源码"压缩包,你可以查看并运行完整的Java代码示例。
Mybatis 处理 CLOB、BLOB 类型数据 MyBatis 处理 CLOB、BLOB 类型数据是指在使用 MyBatis 框架时,如何正确地处理大字段类型的数据。CLOB(Character Large OBject)和 BLOB(Binary Large OBject)都是大字段类型...
然后,通过类似的方法,读取本地文件并将其内容插入到MySQL的BLOB字段中。在Java中,你可以使用`PreparedStatement`的`setBinaryStream()`方法: ```java FileInputStream in = new FileInputStream(...
要从数据库读取图片,你需要执行一个SELECT查询,获取Blob对象,然后将其转换回图片文件。 ```java ResultSet rs = stmt.executeQuery("SELECT imageData FROM images WHERE id = ?"); if (rs.next()) { Blob ...
5. **读取Blob数据**:遍历结果集,对于每一行,使用`ResultSet.getBlob()`获取Blob对象,然后调用`Blob.getBytes()`获取图片的字节数组。 6. **保存图片**:将字节数组写入本地文件,可以使用`java.io....
当我们需要在MySQL数据库中处理大对象(Binary Large Object,简称BLOB)时,如图片、音频或视频等非文本数据,就需要结合MySQL和Qt来完成。下面我们将详细讨论如何在MySQL和Qt环境下对BLOB数据类型进行操作。 首先...
在数据库管理中,存储非结构化数据如图片、音频或视频文件时,通常会使用`CLOB`(Character Large Object)和`BLOB`(Binary Large Object)这两种数据类型。Oracle数据库系统支持这两种数据类型,用于存储大量文本...
4. **查询与显示图片**:从数据库中获取图片时,需要将BLOB数据还原成原始的图片格式。在网页端,可以使用后端语言(如PHP、Python或Node.js)处理这个过程,然后将图片数据发送给前端展示。例如,用PHP可以这样处理...
`CLOB`用于存储非结构化的字符数据,如长篇文章、XML文档等,而`BLOB`则用于存储二进制大对象,如图片、音频或视频文件。在处理这些大型数据时,数据库系统需要考虑存储效率、性能和查询能力。 1. MySQL对`CLOB`和`...
以上就是Java中Blob字段操作的基本流程,通过这些步骤,你可以成功地将图片或文件保存到数据库中,并能从数据库中读取和恢复这些数据。在实际开发中,根据具体需求,可能还需要处理异常、事务管理和资源关闭等问题,...
`jsp1.rar_jsp blob_jsp 图片_mysql blob_图片 MySQL`这个标题和描述指向了一个具体的场景:使用JSP(JavaServer Pages)从MySQL数据库中读取存储为BLOB(Binary Large Object)类型的图片数据。 首先,我们来理解...
标题"Clob-blob.rar_blob and clob_clob_java CLOB_java oracle cl_oracle"暗示了这个压缩包包含的资源是关于使用Java操作Oracle数据库中的CLOB和BLOB字段的示例代码。这个压缩包可能包含了一个名为`clob-blob.java`...
spring 中对大数据的处理,包括clob,blob的数据。比之jdbc下简便很多。
读取图片时,通过`ResultSet`的`getBinaryStream`方法获取图片数据,然后将其写入文件输出流(`FileOutputStream`)。 在实际开发中,为了提高效率和确保数据完整,建议使用PreparedStatement预编译SQL语句,避免...
### Java中读取Oracle数据库BLOB字段存储的图片方法详解 #### 一、背景与目的 在实际的应用开发过程中,经常会有将图片等二进制数据存入数据库的需求。Oracle数据库支持通过BLOB(Binary Large Object)类型来存储...
了解BLOB和CLOB的区别以及如何在Oracle中进行插入和查询操作对于数据库开发者和管理员来说至关重要。 首先,我们来看BLOB和CLOB的主要区别: 1. 数据类型:BLOB用于存储二进制大对象,如图片、视频、音频文件或者...
2、com.ub:实现简单的插入及读取操作,读取后的BLOB可以生成新图片,并使用JFrame方式展现。 3、com.cc: 由于需要将两个不同库(测试代码是同一个库的两个表 IMAGETAB和 IMAGETAB3)的的照片进行更新,表里面存...
"MySQL 中的 BLOB 到文件的转换" 在 MySQL 数据库中,BLOB(Binary Large OBject)是一种二进制大对象类型,常用于存储图像、音频、视频和其他类型的文件。然而,在实际应用中,我们经常需要将 BLOB 数据转换为文件...