`

JDBC中处理二进制类型数据

    博客分类:
  • JDBC
阅读更多
package jdbc;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 *
 * @author HaoWang
 */
public class BlobTest {
    public static void main(String[] args) {
//        create(1,"C:\\a.jpg");
        read(1,"C:\\a_bak.jpg");
    }
    public static void create(int bid, String path) {
        Connection conn = null;
        String sql = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            conn = JdbcUtils.getConnection();
            sql = "insert into blob_test(bid,content) value(?,?)";
            ps = conn.prepareStatement(sql);
            ps.setInt(1, bid);
            File file = new File(path);
            InputStream in = new BufferedInputStream(new FileInputStream(file));
            ps.setBinaryStream(2, in, file.length());
            int i = ps.executeUpdate();
            System.out.println("i="+i);
            in.close();
        } catch (Exception ex) {
            System.out.println(ex.toString());
        } finally {
            JdbcUtils.free(conn, ps, rs);
        }
    }
    public static void read(int bid, String path) {
        Connection conn = null;
        String sql = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            conn = JdbcUtils.getConnection();
            sql = "select content from blob_test where bid=?";
            ps = conn.prepareStatement(sql);
            ps.setInt(1, bid);
            rs = ps.executeQuery();
            while(rs.next()) {
                InputStream in = rs.getBinaryStream(bid);
                File file = new File(path);
                OutputStream out = new BufferedOutputStream(new FileOutputStream(file));
                byte[] buff = new byte[1024];
                for(int i=0; (i=in.read(buff))>0;) {
                    out.write(buff, 0, i);
                }
                out.close();
                in.close();
            }

        } catch (Exception ex) {
            System.out.println(ex.toString());
        } finally {
            JdbcUtils.free(conn, ps, rs);
        }
    }
}

 

分享到:
评论

相关推荐

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

    `MSSQLUploader.java`文件可能包含实现与SQL Server 2000交互的代码,包括建立JDBC连接,使用PreparedStatement进行数据插入,并且可能使用CallableStatement调用存储过程来处理二进制数据。读取时,可以使用...

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

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

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

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

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

    1. **二进制流**:二进制流是一种数据表示方式,允许我们处理任何类型的原始字节数据,包括图片、音频文件或视频文件。在数据库中,二进制流常用于存储无法直接用文本格式表示的数据。 2. **SQL Server 2008与图片...

    图片以二进制存取数据库

    编程语言会提供API来处理二进制数据和SQL语句的执行。 5. **关闭连接**:操作完成后,记得关闭数据库连接,以释放资源。 取出图片显示的步骤: 1. **查询图片数据**:使用SELECT语句从数据库中获取图片的二进制...

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

    向MYSQL中写入二进制...向MYSQL数据库中写入二进制文件需要将要存储的数据转换成二进制流,然后使用PreparedStatement将其写入数据库中。同时,我们也可以使用Java读取MYSQL数据库中的二进制文件,以便于显示或处理。

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

    同时,这种格式允许任何能够处理二进制数据的程序来读取和显示图片,而不受特定文件格式的限制。 二、数据库中的二进制数据模型 在关系型数据库中,如MySQL、Oracle或SQL Server,通常有特定的数据类型用于存储二...

    java连接Access2010读取图片二进制

    在给定的代码示例中,展示了如何使用Java连接到Access 2010数据库并读取存储为二进制流的图片数据,然后将这些二进制流转换回图片文件。以下是对这个过程的详细解释: 首先,为了连接到Access数据库,我们需要引入...

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

    综上所述,将图片转换为二进制流并存储到数据库中是一种常见的数据存储策略,尤其适用于需要将图片与其它数据集成的情况。理解这个过程对于开发涉及图像数据的Web应用、数据库设计和数据处理的IT专业人员来说至关...

    springMvc+Oracle的图片转二进制流

    在Java中,我们可以使用`java.io.InputStream`和`java.io.OutputStream`来处理二进制流。 在Spring MVC项目中,处理图片转二进制流的步骤通常包括以下几个部分: 1. **前端上传**:用户通过网页上传图片,Spring ...

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

    这篇文章将深入探讨如何在数据库中处理二进制图片,并提供一种显示它们的方法,供学习者参考。 首先,我们要理解图片本质上是二进制数据,通常以.jpg、.png或.gif等格式存在。这些文件由一系列0和1组成,代表图像的...

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

    在MySQL数据库中,存储大文本(例如长篇文章、HTML代码)和二进制文件(如图片、PDF文档)是一项常见的需求。...正确理解和使用这些技术和数据类型,可以有效地管理和处理大数据量的文本和二进制资源。

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

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

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

    在 SQL Server 中,binary 是一个二进制类型,用于存储二进制数据。在 Java 中,binary 对应的数据类型是 byte 数组。 bit 在 SQL Server 中,bit 是一个布尔类型,用于存储布尔值。在 Java 中,bit 对应的数据...

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

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

    各大数据库类型与JDBC中介数据类型的转换对比

    - **SQL Server**: 使用`BINARY`和`VARBINARY`类型,但不支持`BIT`作为二进制数据类型。 - **Oracle**: 支持`RAW`类型,类似于`BINARY`;不支持`BIT`类型。 - **DB2**: 支持`BINARY`和`BIT`类型。 - **JDBC**: `...

    数据类型关系映射表

    - **解释**:MySQL 的二进制类型 `BINARY` 映射至 JDBC 中同样类型的 `BINARY`。 - **注意事项**:该类型用于存储固定长度的二进制数据,长度通常不超过 8000 字节。在映射过程中需要注意保持原始数据的完整性。 ...

    jdbc 处理clob类型字段

    在Oracle数据库中,CLOB可以用于存储非二进制的文本数据。 1. 插入CLOB数据: 在Java中,我们通常使用PreparedStatement来插入CLOB数据。首先,创建一个Clob对象,并将待插入的文本数据写入到Clob对象中,然后在SQL...

    商业编程-源码-使用流对二进制大对象进行读写.zip

    本资源“商业编程-源码-使用流对二进制大对象进行读写.zip”提供了一种利用流技术处理二进制大对象的方法,这在Java或.NET等面向对象编程语言中是非常实用的技术。 首先,我们需要理解什么是二进制大对象。二进制大...

    基于存储过程的MySQL数据库BLOB字段访问.pdf

    基于存储过程的MySQL数据库BLOB字段访问是指在MySQL数据库中使用存储过程来访问和处理二进制数据的方法。这种方法可以使得数据库的二进制数据处理变得更加方便和高效。 MySQL数据库提供了BLOB数据类型,可以用来...

Global site tag (gtag.js) - Google Analytics