`
在水伊方
  • 浏览: 111599 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

用JDBC访问二进制类型的数据

    博客分类:
  • JDBC
阅读更多

用JDBC访问二进制类型的数据

 

public class BlobTest {
	public static void main(String[] args) throws SQLException, IOException, ClassNotFoundException {
		// create();
		read();
	}

	// 从数据库读取二进制类型的数据
	static void read() throws SQLException, IOException, ClassNotFoundException {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;

		try {
			// 1.加载驱动
			Class.forName("com.mysql.jdbc.Driver");

			// 2.建立连接
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc", "root", "123456");

			// 3.创建语句
			ps = conn.prepareStatement("select big_bit from blob_test");

			// 4.执行语句
			rs = ps.executeQuery();

			// 5.处理结果
			while (rs.next()) {
				Blob blob = rs.getBlob(1);
				InputStream in = blob.getBinaryStream();

				File file = new File("IMG_0002_bak.jpg");
				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();
			}
		} finally {
			if (rs != null)	rs.close(); rs = null;
			if (ps != null)	ps.close();	ps = null;
			if (conn != null) conn.close();	conn = null;
		}
	}

	// 把二进制类型的数据(这里是一张图片)存入数据库
	static void create() throws SQLException, IOException, ClassNotFoundException {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;

		try {
			// 1.加载驱动
			Class.forName("com.mysql.jdbc.Driver");

			// 2.建立连接
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc", "root", "123456");

			// 3.创建语句
			String sql = "insert into blob_test(big_bit) values (?)";
			ps = conn.prepareStatement(sql);

			File file = new File("IMG_0002.jpg");
			InputStream in = new BufferedInputStream(new FileInputStream(file));
			
			ps.setBinaryStream(1, in, (int) file.length());

			// 4.执行语句
			int i = ps.executeUpdate();
			in.close();

			System.out.println("i=" + i);
		} finally {
			if (rs != null)	rs.close(); rs = null;
			if (ps != null)	ps.close();	ps = null;
			if (conn != null) conn.close();	conn = null;
		}
	}
}

 

分享到:
评论

相关推荐

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

    `MySQLUploader.java`文件可能包含处理MySQL数据库中图片或二进制数据的Java代码,使用JDBC连接,加载MySQL驱动,通过PreparedStatement执行SQL语句将二进制数据存入数据库。读取时,可以使用ResultSet的...

    图片以二进制存取数据库

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

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

    - **创建表结构**:Oracle提供`BLOB`类型来存储二进制数据。创建`ImagesTable`,包含一个`BLOB`类型的`ImageBlob`字段。 - **保存图片**:类似于SQL Server,将图片读取为字节数组,然后使用`PL/SQL`过程或Java的...

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

    在关系型数据库中,如MySQL、Oracle或SQL Server,通常有特定的数据类型用于存储二进制数据,如BLOB(Binary Large Object)、VARBINARY或IMAGE。这些数据类型能容纳任意大小的二进制流,适合存储图片。 三、从...

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

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

    JDBC.rar_MYSQL_MYSQL  数据类型_jdbc_jdbc mysql

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

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

    在调用存储过程时,我们可以使用ODBC、JDBC等方式来将二进制数据作为参数传递给存储过程。在这个文件中,我们使用了C API的方式来调用存储过程。具体来说,我们可以使用 MySQL 的C API来将二进制数据作为参数传递给...

    apache-activemq-5.15.15二进制包,安装包

    这个“apache-activemq-5.15.15二进制包,安装包”包含了运行和配置ActiveMQ所需的所有组件,方便用户在本地计算机或服务器上快速部署和使用。该版本5.15.15是Apache ActiveMQ的一个稳定版本,提供了许多增强的功能...

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

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

    JDBC中的Results相关函数

    - `getBlob()`: 获取Blob类型的数据,返回一个java.sql.Blob对象,代表大二进制数据。 4. 高级类型的方法: - `getBigDecimal()`: 获取Decimal、Numeric类型的数据,返回一个BigDecimal对象,用于精确的浮点数值...

    jdbc课件以及源代码(数据源)

    处理二进制数据时,可以使用`PreparedStatement.setBinaryStream()`将输入流设置为参数,而`ResultSet.getBinaryStream()`则返回一个表示BLOB数据的输入流。通常,我们还需要配合使用`java.io`类库中的`InputStream`...

    使用JDBC数据接口存取Oracle LOB(大对象).pdf

    BLOB用于存储非文本的二进制数据,如图片、音频和视频文件,而CLOB则用于存储大文本数据,如长篇文章或文档。 接着,文章详细讲述了JDBC在访问Oracle数据库中的LOB数据时的作用。JDBC是Java连接关系数据库的标准...

    JDBC学习笔记

    #### 十、用JDBC访问文本和二进制数据 - **文本数据**: - 将文本数据插入数据库。 - 从数据库中读取文本数据。 - **二进制数据**: - 插入图片等二进制数据。 - 从数据库中读取二进制数据。 #### 十一、JDBC...

    映射 SQL 和 Java 类型

    在 Java 应用程序中使用 JDBC 访问数据库时,需要将 SQL 数据类型映射到 Java 类型,以便在 Java 应用程序和数据库之间读写数据。JDBC 提供了 getXXX 和 setXXX 方法集、registerOutParameter 方法和 Types 类来实现...

    利用Java语言实现PB对Oracle中Blob类型的动态操作.pdf

    Blob(Binary Large OBject)是Oracle中的一种数据类型,用于存储大型二进制数据,例如图片、音频和视频等。在实际应用中,Blob类型数据需要使用特殊的处理方法来实现动态访问和存储。 2.Java存储过程 Java存储...

    JDBC Java代码

    这种转换发生在客户端,因此需要在客户端安装一些二进制代码。 3. **类型3:网络协议全Java驱动** - 将JDBC调用转换成独立于任何原生数据库协议的网络协议。中间件软件运行在服务器上,将网络协议转换为原生数据库...

    OracleBlobToJPG

    Oracle数据库是一种广泛应用的关系型数据库管理系统,它支持多种数据类型,包括Blob(Binary Large Object)类型,用于存储大块二进制数据,如图片、视频或文档。本篇文章将详细介绍如何将Oracle数据库中的Blob类型...

    java(jdbc)学习

    JDBC支持各种数据类型,包括基本数据类型(如INT、VARCHAR)、日期类型(DATE、TIME、TIMESTAMP)、大文本类型(CLOB)和大二进制对象(BLOB)。 #### 六、DAO 设计模式 DAO(Data Access Object)设计模式用于...

    java JDBC与数据库访问学习教案.pptx

    JDBC驱动程序是连接Java应用程序和DBMS的桥梁,分为四种类型:JDBC-ODBC桥接驱动、网络纯Java驱动、二进制兼容驱动和直接协议驱动。 - JDBC的基本步骤包括:加载驱动、建立数据库连接、创建Statement或...

Global site tag (gtag.js) - Google Analytics