如果要把图片等二进制数据存入数据库,要把数据库中的相应字段设为“blob”,Mysql数据库是这样,其他数据库可能有所不同。
测试代码:
/**
* 图片等二进制数据的数据库插入、读取操作
*/
package test;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import mysql.base.JdbcUtils;
/**
*
* 2009-9-25
*
* 湖南大学 计算机与通信学院 计算机科学与技术专业
*
* @author 陈春晓
*
*/
public class BlobTest {
/**
* @param args
* @throws IOException
* @throws SQLException
*/
public static void main(String[] args) throws SQLException, IOException {
// TODO Auto-generated method stub
//create();
read();
}
/**
* 插入数据
*
* @throws SQLException
* @throws IOException
*/
public static void create() throws SQLException, IOException {
String sqlStr = "insert into blob_test(big_bit) values(?)";
Connection conn = null;
PreparedStatement ps = null;
try {
// 注册驱动,只需要一次
// Class.forName("com.mysql.jdbc.Driver");
// 建立连接
conn = JdbcUtils.getInstance().getConnection();
// 创建语句
ps = conn.prepareStatement(sqlStr);
File file = new File("C:\\Documents and Settings\\Administrator\\桌面\\logo-yy.gif");
InputStream in = new BufferedInputStream(new FileInputStream(file));
ps.setBinaryStream(1, in, (int) file.length());
// 执行语句
ps.executeUpdate();
// 关闭文件
in.close();
} finally {
JdbcUtils.getInstance().free(null, ps, conn);
}
}
/**
* 读取数据库
*
* @throws SQLException
* @throws IOException
*/
public static void read() throws SQLException, IOException {
String sqlStr = "select big_bit from blob_test";
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
// 建立连接
conn = JdbcUtils.getInstance().getConnection();
// 创建语句
st = conn.createStatement();
// 执行语句
rs = st.executeQuery(sqlStr);
// 处理结果
while (rs.next()) {
BufferedInputStream bis = new BufferedInputStream(rs.getBinaryStream("big_bit"));
byte[] buf = new byte[1024];
int len = 0;
File file = new File("text.gif");
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
while ((len = bis.read(buf)) != -1) {
bos.write(buf, 0, len);
}
bos.close();
}
} finally {
JdbcUtils.getInstance().free(rs, st, conn);
}
}
}
分享到:
相关推荐
在将图片存入数据库前,需要选择一个适合存储二进制数据的数据库字段类型,如MySQL的BLOB(Binary Large Object)。以下是在SQL Server中存储图片的示例: ```sql INSERT INTO Images (ImageData) VALUES (@binary...
总之,图片存取(二进制)是一项基础而重要的IT技能,它涉及到文件读写、数据库操作、数据压缩以及网络传输等多个方面。理解和掌握这项技术对于开发高效、可靠的系统至关重要。在实际应用中,应根据具体需求和环境...
当涉及到数据库操作时,比如MySQL、SQLite或MongoDB等,我们需要考虑如何将二进制图片数据存入数据库。大多数数据库系统支持二进制大对象(BLOB,Binary Large Object)类型字段,可以用来存储图片等非结构化数据。...
在这个案例中,我们使用C++与Access数据库进行交互,利用二进制数据类型来存储图像。下面我们将详细探讨这个过程涉及的关键知识点。 1. **C++数据库接口**: - C++标准库并未提供直接访问数据库的接口,但可以通过...
在IT领域,数据库存储和读取二进制数据,如图片,是一项常见的任务。这篇文章将深入探讨如何在数据库中处理二进制图片,并提供一种显示它们的方法,供学习者参考。 首先,我们要理解图片本质上是二进制数据,通常以...
本主题主要探讨如何将图片转换为二进制,存储在数据库中,并进行相关操作。 一、图片与二进制 图片本质上是由像素点组成的,每个像素点都有对应的RGB(红绿蓝)颜色值。这些颜色值可以转换为二进制表示,即0和1的...
在MySQL数据库中,存储大文本(例如长篇文章、HTML代码)和二进制文件(如图片、PDF文档)是一项常见的需求。这样的数据通常不适合用标准的数据类型如VARCHAR或TEXT来处理,因为它们可能超出这些类型的最大限制。...
- 使用`FileStream`类进行二进制文件的读写操作。 - **文件的自动识别与处理** - 通过分析文件头或文件扩展名来判断文件类型,并采取相应的处理方式。 - **文件安全** - 如何安全地处理用户上传的文件,包括文件...
MySQL二进制安装包是一种非源码编译的安装方式,它通常包含了预编译的二进制可执行文件,适合快速部署和配置MySQL数据库服务器。在Linux环境下,这种安装方式尤其常见,因为Linux发行版之间的库差异可能导致源码编译...
【MySQL 数据库读写分离与负载均衡】 MySQL 数据库的读写分离是一种常见的优化策略,旨在提高系统的可扩展性和性能。在大型应用中,数据库往往成为性能瓶颈,尤其是在高并发的场景下,读写操作混杂可能导致服务器...
在介绍使用Mycat实现MySQL数据库读写分离的详细知识点之前,我们首先需要理解什么是数据库的读写分离,以及为什么要进行读写分离。读写分离是数据库架构设计中的常用策略,主要目的是为了提高数据库的读取性能和系统...
通过C#的SerialPort类,开发者可以方便地实现串口的打开、关闭、读写操作,以及设置波特率、数据位、停止位等参数,为串口通信提供了强大的支持。 串口调试助手的核心功能之一是16进制收发选择。在调试过程中,有时...
在这个场景中,我们关注的是如何使用C#编程语言与MySQL数据库进行交互,特别是涉及到上传图片到数据库的操作。标题"SaveImage_c#mysql数据库上传图片_more11h_MYSQL_savelmage_SAVe:IMAGe_"暗示我们将探讨一个C#应用...
这个"二进制图片导出(完整版vs2012winfom程序)"是一个实用工具,它结合了数据库连接、数据查询、二进制数据处理、文件操作等多种技术,为用户提供了一个全面的解决方案,来处理存储在数据库中的二进制图片数据。...
在Java编程中,有时我们需要将图片等大容量的二进制数据存储到数据库中,MySQL提供了BLOB(Binary Large Object)类型,专门用于存储大块的二进制数据。本实例将详细介绍如何使用Java和MySQL进行图片的存取操作。 ...
这个"QT MySQL vchar int picture demo"是一个示例项目,它演示了如何在QT C++环境中使用MySQL数据库进行文本(vchar)、整数(int)以及图片数据的读写操作。下面我们将详细探讨相关的知识点。 1. **QT框架**:QT...
在 MySQL 的主从复制机制中,日志系统 A 是 MYSQL 的日志类型中的二进制日志,也就是专门用来保存修改数据库表的所有动作,即 bin log。日志系统 B,并不是二进制日志,由于它是从 MYSQL-A 的二进制日志复制过来的,...
MySQL的复制过程大致包括以下几个步骤:主服务器执行更新操作时记录到二进制日志(binlog),从服务器读取主服务器上的二进制日志,并按照顺序执行相同的更新操作,从而达到数据同步的目的。 配置MySQL复制需要完成...
- **安装与配置**:MySQL可在多种平台上安装,Windows环境下通常采用二进制分发版,通过.msi安装文件安装。安装完成后,需要启动MySQL服务以便客户端连接。 - **启动服务与登录MySQL**:MySQL服务可以通过Windows...