`
minzaipiao
  • 浏览: 148587 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

jdbc操作大段文本和二进制数据类型

    博客分类:
  • Java
阅读更多
使用jdbc操作大段文本和二进制数据类型

1 clob类型 用以存储大容量的文本
mysql中对应的字段类型是mediumText ,text 和longTetxt

向数据库中插入大段的文本

public static void insert(){
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try
		{
			String sql = "insert into clob(content) values(?)";

			conn = JdbcUtils.getInstance().getConnection();
			pstmt = conn.prepareStatement(sql);

			File file = new File("src/jdbc/CRUD.java");

			BufferedReader br = new BufferedReader(new FileReader(file));
			pstmt.setCharacterStream(1, br, file.length());
			
			int result = pstmt.executeUpdate();

			System.out.println(result);
			br.close();
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		catch (FileNotFoundException e)
		{
			e.printStackTrace();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
		finally
		{
			JdbcUtils.classAll(conn, pstmt, rs);
		}
	}


读取clob类型的数据
public static void read(){
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		try
		{
			conn = JdbcUtils.getInstance().getConnection();
			stmt = conn.createStatement();
			rs = stmt.executeQuery("select content from clob where id = 2");
			while (rs.next())
			{
				Clob clob = rs.getClob("content");
				Reader read = clob.getCharacterStream();
				
				//Reader read = rs.getCharacterStream("content");
				File file = new File("CRUD_bak.java");
				
				BufferedWriter bw = new BufferedWriter(new FileWriter(file));
				char[] buffer = new char[1024];
				/*for(int i; (i=read.read(buffer)) >0;){
					bw.write(buffer, 0, i);
				}*/
    int c = -1;
				while((c = read.read(buffer)) != -1){
					bw.write(buffer, 0, c);
				}

				bw.close();
				read.close();
				//System.out.println(rs.getString("content"));
			}
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
		finally
		{
			JdbcUtils.classAll(conn, stmt, rs);
		}
	}


2 blob类型用以存储二进制的数据
mysql对应的字段类型: mediumBlob,Bolb,LongBlob

插入数据
public static void insertBlob()
	{
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try
		{
			String sql = "insert into blob_(content) values(?)";

			conn = JdbcUtils.getInstance().getConnection();
			pstmt = conn.prepareStatement(sql);

			File file = new File("Ext2.2英文API.CHM");

			BufferedInputStream fis = new BufferedInputStream(
					new FileInputStream(file));
			pstmt.setBinaryStream(1, fis, fis.available());

			int result = pstmt.executeUpdate();

			System.out.println(result);
			fis.close();
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		catch (FileNotFoundException e)
		{
			e.printStackTrace();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
		finally
		{
			JdbcUtils.classAll(conn, pstmt, rs);
		}
	}



读取bolb的数据
public static void readBlob()
	{
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		try
		{
			conn = JdbcUtils.getInstance().getConnection();
			stmt = conn.createStatement();
			rs = stmt.executeQuery("select content from blob_ where id = 3");
			while (rs.next())
			{
				//Blob blob = rs.getBlob("content");
				//InputStream is = blob.getBinaryStream();
				
				InputStream is = rs.getBinaryStream("content");
				File file = new File("Ext2.2英文API_bak.CHM");
				FileOutputStream os = new FileOutputStream(file);
				int i =0;
				while((i = is.read()) != -1){
					os.write(i);
				}
				os.close();
				is.close();
			}
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
		finally
		{
			JdbcUtils.classAll(conn, stmt, rs);
		}
	}
分享到:
评论

相关推荐

    MySQL存取大文本及二进制文件(图片)

    为了解决这个问题,MySQL提供了BLOB(Binary Large Object)和TEXT类型,它们专门设计用来存储大量的文本和二进制数据。 1. **BLOB和TEXT类型** - **BLOB** 类型用于存储二进制数据,有TINYBLOB、BLOB、MEDIUMBLOB...

    Oracle,SQL2000,MYSQL存取图片或二进制数据的功能文件

    在数据库管理领域,存储和检索图片或二进制数据是一项常见的需求。Oracle、SQL Server 2000以及MySQL这三种流行的数据库系统都提供了相应的方法来处理这些非结构化数据。下面将详细介绍这三个数据库系统在存储和访问...

    SqlServer与Oracle保存与读取图片二进制流

    4. **跨数据库操作**:在SQL Server和Oracle之间迁移或共享图片数据时,可能需要使用数据迁移工具或编程接口,如ODBC或JDBC,将二进制流从一个数据库复制到另一个。 5. **性能考虑**: - **存储效率**:存储二进制...

    图片以二进制存取数据库

    在关系型数据库如MySQL、PostgreSQL、Oracle和SQL Server中,BLOB是一个特殊的数据类型,用于存储大量的二进制数据,例如图片、音频或视频文件。在SQL Server中,这种类型被称为`VARBINARY(MAX)`,它允许存储最多2^...

    实现数据库二进制流转换成图片保存本地

    在IT领域,数据库中存储图片通常以二进制流(Binary Stream)的形式进行,这是因为二进制流可以高效地处理图像数据,同时节省存储空间。本文将深入探讨如何实现从数据库中的二进制流转换为图片,并将其保存到本地...

    JPA完成单表注解配置说明包括日期,大文本,二进制文本,枚举

    在Java世界中,Java Persistence API(JPA)是用于管理和持久化对象的规范,它使得在关系数据库中操作数据变得更加简单。本篇文章将深入探讨如何使用JPA进行单表注解配置,涵盖日期、大文本、二进制文本以及枚举类型...

    java连接Access2010读取图片二进制

    在循环中,代码读取每条记录的`id`字段和`data`字段,`data`字段包含了二进制图片数据。`rs.getString("id")`获取`id`字段的值,而`rs.getBinaryStream("data")`则返回`data`字段的二进制输入流。 接下来,使用`...

    从数据库中读取二进制图片

    在IT领域,数据库常用于存储各种类型的数据,包括文本、数字以及图像等非...这个过程涉及到数据库操作、二进制数据处理以及图片编码等多个技术点,理解并掌握这些知识对于开发涉及数据库存储和检索图片的应用至关重要。

    将图片存放进数据库(转换成二进制流)

    3. **准备数据库连接和SQL语句**:连接到数据库,创建一个可以存储二进制数据的表,通常会有一个BLOB(Binary Large Object)类型的字段来存储图片。编写一个SQL插入语句,用于将图片的字节数组存入数据库。 4. **...

    blob,将byte二进制转成pdf

    在Java编程环境中,Blob对象是JDBC API的一部分,用于存储和检索大型二进制数据。 首先,我们需要理解如何从数据库中获取Blob数据。在Java中,Blob对象可以从ResultSet中检索,然后通过其getBinaryStream()方法获取...

    如何向MYSQL中写入二进制文件

    在实际开发中,我们经常需要将二进制文件存储在数据库中,以便于后续的使用和管理。在这篇文章中,我们将介绍如何通过Java或JSP向MYSQL数据库中写入二进制文件。 首先,我们需要了解MYSQL存储大容量的二进制文件的...

    数据库读取二进制图片显示

    创建一个包含图片信息的表,至少需要两个字段:`id`(主键,用于唯一标识图片)和`image_data`(Blob类型,存储图片二进制数据)。 2. **图片上传**:当用户上传图片时,应用需要将图片文件读取为字节流,然后存入...

    springMvc+Oracle的图片转二进制流

    总之,将Spring MVC与Oracle结合,处理图片二进制流,需要理解二进制流的概念,掌握文件读写、数据库操作以及Spring MVC的Controller和Service层处理逻辑。通过以上步骤,可以实现图片的上传、存储和展示,使得图片...

    查询mysql数据库中的二进制图片数据,并全部显示出来

    在MySQL数据库中存储二进制大对象(BLOB)数据,如图片,是常见的做法,因为这种方式便于管理和检索。在本示例中,我们将探讨如何查询包含二进制图片数据的MySQL数据库,并通过JSP(JavaServer Pages)展示这些图片...

    图片转流存库和读取二进制流页面展示

    2. **将二进制流写入数据库**: 描述如何使用JDBC连接数据库并将二进制流数据插入到指定表中。 3. **从数据库读取二进制流并展示**: 讲解如何查询数据库中的二进制流数据,并在HTML页面上进行展示的方法。 #### 二、...

    JDBC.rar_MYSQL_MYSQL  数据类型_jdbc_jdbc mysql

    4. **二进制类型**:如`BLOB`(二进制大对象)、`BINARY`(二进制字符串)、`VARBINARY`(可变长度二进制字符串),在JDBC中通常映射为`java.sql.Blob`和`byte[]`。 5. **NULL类型**:`NULL`表示字段值为空,它在...

    图片以二进制保存到Oracle,取出并显示到页面示例

    在Oracle数据库中,我们创建了一个名为`images`的表,包含`id`和`image_data`两个字段,其中`image_data`字段是BLOB类型,用于存储图片的二进制数据。 当需要从数据库中取出图片并显示在网页上时,可以使用类似的...

    oracle数据类型和对应的JDBC类型.docx

    - `BINARY`、`VARBINARY` 和 `LONGVARBINARY`:在 SQL 标准中定义的二进制数据类型,映射为 `java.sql.Types.BINARY`、`java.sql.Types.VARBINARY` 和 `java.sql.Types.LONGVARBINARY`。 - `RAW`:Oracle 中的二...

    sqlserver数据库类型对应Java中的数据类型

    在 Java 中,对数据库的操作需要通过 JDBC(Java Database Connectivity)来实现,而在 JDBC 中,需要将 SQL Server 的数据类型映射到 Java 中的数据类型。下面将详细介绍 SQL Server 数据库类型对应 Java 中的数据...

    ReadImages_sourcel1r_dieq2j_读取SQL数据库二进制图片_

    综上所述,从SQL数据库中读取二进制图片并生成本地文件是一项常见的任务,涉及数据库操作、二进制数据处理和文件I/O。通过理解这些基本概念和技术,你可以有效地管理和利用存储在数据库中的图像资源。在给定的压缩包...

Global site tag (gtag.js) - Google Analytics