`
m17197092417
  • 浏览: 22588 次
文章分类
社区版块
存档分类
最新评论

Java mysql blob 数据读写操作

 
阅读更多
 
package com.lw.database;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * CREATE: CREATE TABLE IDCard ( id char(18),pic BLOB);
 * @author fhadmin
 * from www.fhadmin.cn
 */
public class LOBTest {

    protected static final String DEFAULT_URL = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8";
    protected static final String DRIVER_NAME = "com.mysql.jdbc.Driver";
    
    private Connection connection = null;
    
    public LOBTest() throws ClassNotFoundException, SQLException {
        Class.forName(DRIVER_NAME);
        connection = DriverManager.getConnection(DEFAULT_URL, "user", "password");
    }
    
    public void insert(String id,String path) throws SQLException, IOException {
        PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO IDCard VALUES (?,?)");
        preparedStatement.setString(1, id);
        FileInputStream fileInputStream = new FileInputStream(path);
        preparedStatement.setBlob(2, fileInputStream,fileInputStream.available());
        preparedStatement.execute();
    }
    
    public void get(String id) throws SQLException, IOException {
        PreparedStatement preparedStatement = connection.prepareStatement("SELECT pic FROM IDCard WHERE id = ?");
        preparedStatement.setString(1, id);
        ResultSet results = preparedStatement.executeQuery();
        while(results.next()) {
            FileOutputStream outputStream = new FileOutputStream("/Users/liuwei/temp.png");
            InputStream inputStream = results.getBinaryStream(1);
            int num = -1;
            while((num=inputStream.read())!=-1) {
                outputStream.write(num);
            }
            outputStream.flush();
            inputStream.close();
            outputStream.close();
        }
    }
    
    public static void main(String[] args) throws ClassNotFoundException, SQLException, IOException {
        LOBTest test = new LOBTest();
        test.insert("78907656784323", "/Users/liuwei/Documents/bt_next_nor.png");
        test.get("78907656784323");
    }
}

 

注意:

  MySQL的四种BLOB类型 

    类型  大小(单位:字节) 

      TinyBlob  最大 255B

        Blob  最大 65K 

        MediumBlob  最大 16M 

      LongBlob  最大 4G 

插入图像的时候,注意下图像大小,图像超过该类型所能容纳的最大字节的时候,会报错

分享到:
评论

相关推荐

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

    在Java中,Blob对象通常由`java.sql.Blob`接口表示,该接口提供了读写Blob数据的方法。 2. **准备工作** 在进行Blob操作前,我们需要准备以下内容: - 数据库连接:使用JDBC(Java Database Connectivity)API...

    oracle中的BLOB(照片)转换到mysql中

    而在MySQL中,BLOB也有类似的分类,包括TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB,分别适用于不同大小的二进制数据。 从Oracle中提取BLOB照片的步骤如下: 1. **查询BLOB数据**:使用SQL查询语句从Oracle数据库中...

    Java实现用Mysql存取图片操作实例

    接下来,我们将通过一个Java代码实例来演示如何在MySQL数据库中进行图片的读写操作。假设我们已经有一个名为DBConnection的类,该类负责建立与MySQL数据库的连接。以下是一个简单的Java程序,实现了图片的存取功能:...

    Java+MySql图片数据保存与读取的具体实例

    总的来说,Java与MySQL结合处理图片数据,涉及文件读写、数据库操作以及安全防护等多个方面。在实际开发中,我们需要根据项目需求选择合适的存储策略,同时注意性能和安全问题。通过不断的实践和学习,可以更好地...

    java_mysql_数据类型对照.doc

    - **BLOB类型**:用于存储图像、音频、视频等非结构化数据时非常有用,但需要注意性能问题,大量读写BLOB数据可能会影响数据库的响应速度。 - **BOOLEAN类型**:尽管MySQL中使用TINYINT来表示布尔值,但在Java中...

    hibernate对Blob类型字段进行数据添加.txt

    - 在处理大体积 Blob 数据时,应注意优化性能,比如采用流式读写的方式减少内存占用。 3. **数据库兼容性**: - 当应用需要支持多种数据库时,需要特别注意处理 Blob 数据时的兼容性问题。 4. **异常处理**: -...

    java将图片写入数据库,并读出来(blob clob)

    这个过程通常涉及到Blob和Clob数据类型,它们是Java中的两种特殊对象,用于存储大对象(LOB)。Blob用于存储二进制数据,如图片、音频或视频文件,而Clob则用于存储字符数据,比如长文本。以下是如何使用Java处理...

    【IT十八掌徐培成】Java基础第24天-01.Blob字段操作.zip

    综上所述,Java中的Blob字段操作涵盖了数据的读取、写入、更新和删除,涉及到数据库连接、PreparedStatement、ResultSet等核心组件。熟练掌握这些操作对于处理大量二进制数据至关重要。通过持续学习和实践,开发者...

    Java从数据库中读取Blob对象图片并显示的方法

    在Java编程中,Blob(Binary Large Object)对象用于存储大量二进制数据,如图片、音频或视频文件。当这些数据存储在数据库中时,我们需要有合适的方法来读取并显示它们。这里我们主要探讨两种Java从数据库中读取...

    oracle mysql sqlser2000对大数据对象的操作

    在IT领域,数据库管理系统(DBMS)如Oracle、MySQL和SQL Server 2000是处理大量数据的核心工具。这些系统对于大数据对象的操作至关重要,尤其是对于存储图像、音频、视频等非结构化数据的企业级应用。本文将深入探讨...

    java+mysql 保存图片

    首先,我们需要理解Java的文件操作、数据库连接以及MySQL的数据类型。 1. **Java文件操作**: 在Java中,我们可以使用`java.io`包中的类来处理文件。例如,`FileInputStream`用于读取文件,`FileOutputStream`用于...

    JSP往MYSQL中插入,读写图片

    接着,使用MySQL的BLOB类型存储这些字节。例如: ```java PreparedStatement pstmt = connection.prepareStatement("INSERT INTO images (image_data) VALUES (?)"); pstmt.setBytes(1, imageBytes); pstmt....

    matlab开发-Myblob

    它涵盖了数据库连接、BLOB数据的读写操作,并可能涉及到特定的错误处理和优化策略。对于需要在MATLAB中与数据库交互的开发者来说,这是一个非常实用的参考资源。为了进一步学习和应用,我们应该深入研究`myblob.m`的...

    使用Jdbc4操作Blob,Clob

    在Java的数据库编程中,JDBC(Java Database Connectivity)是一个重要的接口,用于与各种数据库进行交互。当涉及到处理大型对象...无论是直接使用JDBC还是结合ORM框架,都可以灵活地实现对Blob和Clob的读写操作。

    JDBC 图片录入mysql库 完整版

    - 对于大数据量的图片,考虑分块读写,避免一次性加载大量数据导致内存溢出。 通过以上介绍,你应该对使用JDBC将图片录入MySQL数据库有了全面的理解。实际开发中,可以根据具体需求和项目规模,选择合适的数据存储...

    MySql数据库连接+IO

    本文将详细介绍如何通过 Java 程序实现与 MySQL 数据库的连接,并利用输入输出流(IO 流)进行图片数据的读写操作。本示例适用于需要在数据库中存储和检索二进制大对象(如图像)的应用场景。 #### 二、环境配置与...

    mysql-connector-java-5.0.7.rar

    6. **类型映射**:将MySQL数据库的类型映射为Java的数据类型,如`BLOB`到`byte[]`,`DATE`到`java.sql.Date`,方便数据的读写。 7. **批处理**:允许一次提交多条SQL语句,提高效率。 8. **连接池支持**:可以集成...

    java大对象

    操作方式与Blob类似,但用于字符数据。 - 创建Clob对象:通过`PreparedStatement`的`setClob()`方法,可以传入Reader或String来创建Clob。 - 读取Clob对象:使用`getClob()`获取Clob对象,然后调用`...

    mysql课件资源(课程设计)

    在Java中,I/O流用于读写文件,与数据库交互时,可能需要将数据序列化到文件,或者从文件中恢复数据,这时会用到I/O操作。 - JDBC中的`ResultSet`对象可以通过`getBinaryStream()`方法读取二进制数据,这在处理BLOB...

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

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

Global site tag (gtag.js) - Google Analytics