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对象通常由`java.sql.Blob`接口表示,该接口提供了读写Blob数据的方法。 2. **准备工作** 在进行Blob操作前,我们需要准备以下内容: - 数据库连接:使用JDBC(Java Database Connectivity)API...
而在MySQL中,BLOB也有类似的分类,包括TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB,分别适用于不同大小的二进制数据。 从Oracle中提取BLOB照片的步骤如下: 1. **查询BLOB数据**:使用SQL查询语句从Oracle数据库中...
接下来,我们将通过一个Java代码实例来演示如何在MySQL数据库中进行图片的读写操作。假设我们已经有一个名为DBConnection的类,该类负责建立与MySQL数据库的连接。以下是一个简单的Java程序,实现了图片的存取功能:...
总的来说,Java与MySQL结合处理图片数据,涉及文件读写、数据库操作以及安全防护等多个方面。在实际开发中,我们需要根据项目需求选择合适的存储策略,同时注意性能和安全问题。通过不断的实践和学习,可以更好地...
- **BLOB类型**:用于存储图像、音频、视频等非结构化数据时非常有用,但需要注意性能问题,大量读写BLOB数据可能会影响数据库的响应速度。 - **BOOLEAN类型**:尽管MySQL中使用TINYINT来表示布尔值,但在Java中...
- 在处理大体积 Blob 数据时,应注意优化性能,比如采用流式读写的方式减少内存占用。 3. **数据库兼容性**: - 当应用需要支持多种数据库时,需要特别注意处理 Blob 数据时的兼容性问题。 4. **异常处理**: -...
这个过程通常涉及到Blob和Clob数据类型,它们是Java中的两种特殊对象,用于存储大对象(LOB)。Blob用于存储二进制数据,如图片、音频或视频文件,而Clob则用于存储字符数据,比如长文本。以下是如何使用Java处理...
综上所述,Java中的Blob字段操作涵盖了数据的读取、写入、更新和删除,涉及到数据库连接、PreparedStatement、ResultSet等核心组件。熟练掌握这些操作对于处理大量二进制数据至关重要。通过持续学习和实践,开发者...
在Java编程中,Blob(Binary Large Object)对象用于存储大量二进制数据,如图片、音频或视频文件。当这些数据存储在数据库中时,我们需要有合适的方法来读取并显示它们。这里我们主要探讨两种Java从数据库中读取...
在IT领域,数据库管理系统(DBMS)如Oracle、MySQL和SQL Server 2000是处理大量数据的核心工具。这些系统对于大数据对象的操作至关重要,尤其是对于存储图像、音频、视频等非结构化数据的企业级应用。本文将深入探讨...
首先,我们需要理解Java的文件操作、数据库连接以及MySQL的数据类型。 1. **Java文件操作**: 在Java中,我们可以使用`java.io`包中的类来处理文件。例如,`FileInputStream`用于读取文件,`FileOutputStream`用于...
接着,使用MySQL的BLOB类型存储这些字节。例如: ```java PreparedStatement pstmt = connection.prepareStatement("INSERT INTO images (image_data) VALUES (?)"); pstmt.setBytes(1, imageBytes); pstmt....
它涵盖了数据库连接、BLOB数据的读写操作,并可能涉及到特定的错误处理和优化策略。对于需要在MATLAB中与数据库交互的开发者来说,这是一个非常实用的参考资源。为了进一步学习和应用,我们应该深入研究`myblob.m`的...
在Java的数据库编程中,JDBC(Java Database Connectivity)是一个重要的接口,用于与各种数据库进行交互。当涉及到处理大型对象...无论是直接使用JDBC还是结合ORM框架,都可以灵活地实现对Blob和Clob的读写操作。
- 对于大数据量的图片,考虑分块读写,避免一次性加载大量数据导致内存溢出。 通过以上介绍,你应该对使用JDBC将图片录入MySQL数据库有了全面的理解。实际开发中,可以根据具体需求和项目规模,选择合适的数据存储...
本文将详细介绍如何通过 Java 程序实现与 MySQL 数据库的连接,并利用输入输出流(IO 流)进行图片数据的读写操作。本示例适用于需要在数据库中存储和检索二进制大对象(如图像)的应用场景。 #### 二、环境配置与...
6. **类型映射**:将MySQL数据库的类型映射为Java的数据类型,如`BLOB`到`byte[]`,`DATE`到`java.sql.Date`,方便数据的读写。 7. **批处理**:允许一次提交多条SQL语句,提高效率。 8. **连接池支持**:可以集成...
操作方式与Blob类似,但用于字符数据。 - 创建Clob对象:通过`PreparedStatement`的`setClob()`方法,可以传入Reader或String来创建Clob。 - 读取Clob对象:使用`getClob()`获取Clob对象,然后调用`...
在Java中,I/O流用于读写文件,与数据库交互时,可能需要将数据序列化到文件,或者从文件中恢复数据,这时会用到I/O操作。 - JDBC中的`ResultSet`对象可以通过`getBinaryStream()`方法读取二进制数据,这在处理BLOB...
为了解决这个问题,MySQL提供了BLOB(Binary Large Object)和TEXT类型,它们专门设计用来存储大量的文本和二进制数据。 1. **BLOB和TEXT类型** - **BLOB** 类型用于存储二进制数据,有TINYBLOB、BLOB、MEDIUMBLOB...