`
ldsjdy
  • 浏览: 150915 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Blob存储读取图片

    博客分类:
  • Jdbc
阅读更多
package com.jdbctest.clobtest;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.*;

import com.jdbctest.Util.JDBCUtil;

public class BlobTest {
		public static void main(String args[]){
			Connection conn = null;
			Statement stmt = null;
			PreparedStatement ps = null;
			ResultSet rs = null;
			
			//获取数据库对象
			conn = JDBCUtil.getConnection();
			//表存在则删除它
			String sql = "DROP TABLE IF EXISTS blobtest";
			
			try {
				stmt = conn.createStatement();
				System.out.println(sql);
				stmt.executeUpdate(sql);
				//创建表
				sql = "CREATE TABLE blobtest(" + 
				"b_id INT NOT NULL AUTO_INCREMENT,"+
				"b_title VARCHAR(50),"+
				"b_text LongBlob,"+
				"PRIMARY KEY(b_id)"+
				")";
			System.out.println(sql);
			stmt.executeUpdate(sql);
			System.out.println("创建数据表成功!");
			
			sql="INSERT INTO blobtest(b_title,b_text)VALUES(?,?)";
			ps = conn.prepareStatement(sql);
			//插入图片
			//File file = new File("F:\\image\\yahoo.jpg");
			File file = new File("d:\\wuyu\\image\\sea.jpg");
			InputStream inputStream = new FileInputStream(file);
			//BufferedInputStream bis=new BufferedInputStream(inputStream);
			
			//以前的时候直接使用setBinaryStream就可以保存图片,但
			//数据库的字符集换成 gbk后就不能用了,一直提示参数类型不匹配,在网上查了一下,
			//直接向数据库中存byte可解决
			//ps.setString(1, file.getName());
			//ps.setBinaryStream(2,inputStream,file.length());
			//ps.executeUpdate();
			try {
				ps.setString(1, file.getName());
				//新建一byte数组
				byte[] buf=new byte[inputStream.available()];
				//将文件读入到byte[]中
				inputStream.read(buf);
				ps.setBytes(2, buf);
				ps.executeUpdate();
				System.out.println("插入成功!");
			} catch (IOException e1) {
				System.out.println("保存图片到数据库成功!");
				e1.printStackTrace();
			}
			
			
			
			//读取数据
			
			sql = "SELECT b_title,b_text FROM blobtest";
			ps = conn.prepareStatement(sql);
			rs = ps.executeQuery();
			while(rs.next()){
				System.out.println("图片名: "+rs.getString("b_title"));
				//System.out.println("电影名: "+rs.getString("b_title"));
				Blob blob = rs.getBlob("b_text");
				File file2 = new File("d:\\wuyu\\sea.jpg");
				OutputStream outputStream = new FileOutputStream(file2);
				try {
					outputStream.write(blob.getBytes(1,(int)blob.length()));
				} catch (IOException e) {
					e.printStackTrace();
				}
				//打印出来的为对象
				System.out.println("图片内容: "+ blob.getBinaryStream());
				
			}
			} catch (SQLException e) {
				e.printStackTrace();
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			}finally{
				JDBCUtil.close(rs, stmt, conn);
			}
			
		}

}
分享到:
评论

相关推荐

    C#,BLOB读取操作

    在给定的代码中,我们可以看到,使用 FileStream 对象来读取图片文件,并将其转换为字符串。下面是相关的知识点: 1. FileStream 对象:FileStream 是 C# 中的一个类,用于读取和写入文件。它可以用于读取和写入...

    微软云Blob存储java开发所需的jar包

    在微软云Blob存储的Java开发中,这些jar包包含了必要的API和库,使开发者能够与Azure Blob存储服务进行交互,包括创建、读取、更新和删除Blob对象。 以下是一些关键的Java API和概念,用于微软云Blob存储开发: 1....

    mysql,blob格式存储图片事例,商品展示页面

    # 读取图片并转换为二进制 with Image.open('product_image.jpg') as img: byte_arr = io.BytesIO(img.tobytes()) # 连接数据库并插入数据 conn = pymysql.connect(...) cursor = conn.cursor() cursor....

    java中读取ORACLE中BLOB字段存储的图片

    ### Java中读取Oracle数据库BLOB字段存储的图片方法详解 #### 一、背景与目的 在实际的应用开发过程中,经常会有将图片等二进制数据存入数据库的需求。Oracle数据库支持通过BLOB(Binary Large Object)类型来存储...

    oracle blob转文件读取

    ### Oracle Blob类型转换为文件读取的相关知识点 在软件开发过程中,尤其是在处理数据库中的二进制大对象(Binary Large Object, 简称BLOB)时,经常需要将数据库中的BLOB数据转换为文件进行读取或处理。本文将详细...

    java读取大字段blob类型

    在数据库中,`BLOB`(Binary Large Object)类型通常用于存储大量的二进制数据,如图像、音频文件或文档等。而在Java开发过程中,处理这些大数据量的`BLOB`字段是一项挑战性的任务。本文将详细介绍如何在Java中有效...

    Access数据库图片存储与读取

    本文将深入探讨如何在Access数据库中存储和读取图片,并提供一个简单的实现示例。 Access数据库,作为Microsoft Office套件的一部分,是一个功能强大的关系型数据库管理系统(RDBMS),它支持多种数据类型,包括OLE...

    java,Blob字段操作,将图片或者文件保存到数据库中.zip

    - 首先,读取图片或文件的字节流。可以使用`java.io.FileInputStream`来读取本地文件,并通过`FileInputStream.read()`方法获取字节数据。 - 然后,创建`java.sql.Blob`对象,通常数据库连接池提供的`...

    Delphi将图片以二进制方式存储在数据库BLOB字段中.rar

    在这个特定的案例中,"Delphi将图片以二进制方式存储在数据库BLOB字段中"是一个常见的实践,用于高效、安全地保存图片数据。BLOB(Binary Large Object)字段是数据库系统中用来存储大量二进制数据的类型,非常适合...

    图片存入Oracle中,用clob和blob两种方式

    下面将详细介绍这两种数据类型以及如何在Oracle中使用它们存储和读取图片。 1. **CLOB数据类型**: `CLOB`数据类型用于存储大量的字符数据,最大可达到4GB。虽然主要用于存储文本,但在本例中,由于图片可以被转换...

    c#Blob图片在oracle上读取、保存、上传

    c#-操作数据库oracle的小代码,提供用于学习。代码主要实现从oracle读取、保存、上传图片等功能,使用了Oracle.DataAccess.dll,想了解相关知识的欢迎下载,有问题的请给我留言,谢谢。

    数据库存储读取图片

    在IT领域,数据库存储和读取图片是一种常见的需求,特别是在Web应用、文件管理系统或任何需要在后台处理图像的系统中。本篇文章将深入探讨如何在C#环境下利用数据库存储和读取图片,主要关注以下几个方面:数据库...

    Hiberante读取BLOB数据类型.

    在Java的持久化框架Hibernate中,BLOB(Binary Large Object)数据类型被用来存储大量二进制数据,如图片、音频、视频或者大型文本文件。本文将深入探讨Hibernate如何读取BLOB类型的数据,以及在实际开发中需要注意...

    Oracle BLOB,BFILE大文件存储和FTP传输文件

    数据库为Oracle 10g,代码为Visual Studio 2008 VC++开发,软件中的代码有BLOB存储和读取,BFILE存储与读取,FTP上传与下载,以及数据库数据的添加与删除功能。程序已经将数据库的IP,用户名,密码去掉,使用的童鞋把...

    oracle中读取blob字段.doc

    在数据库系统中,BLOB(Binary Large Object)是一种用于存储大量二进制数据的数据类型,例如图像、音频或视频文件等。在Oracle数据库中,BLOB类型特别适用于处理大容量的非结构化数据。本文档将详细介绍如何在...

    Hibernate读取blob字段

    在Java的持久化框架Hibernate中,Blob类型常用于存储大对象(Large Object),如图片、音频、视频或大型文本文件等。本篇文章将深入探讨如何使用Hibernate读取数据库中的Blob字段,以及涉及到的相关知识点。 首先,...

    Delphi 如何将二维数组数据 以Blob 存入数据库中 并读取 工程

    Blob(Binary Large Object)字段类型在数据库中用于存储大块二进制数据,如图像、音频文件或任何其他非文本信息。在本场景中,我们将探讨如何在 Delphi 中将二维数组数据转换为 Blob 数据,然后存入 MySQL 数据库,...

    SQLite3使用blob存储文件的VC程序

    Blob(Binary Large Object)是SQLite3中用于存储二进制大数据类型的一种方式,它可以用来保存图片、音频、视频或者其他任何非文本格式的数据。 在VC6环境下,开发SQLite3的程序通常涉及到以下几个关键知识点: 1....

    C#数据库中图片的存储与读取(免费)

    本项目专注于如何在数据库中存储和读取图片,这是一个常见的需求,例如在电子商务网站或者社交媒体应用中。以下是关于这个主题的详细知识讲解: 1. **数据库存储图片**: - 在C#中,通常使用ADO.NET库来与数据库...

Global site tag (gtag.js) - Google Analytics