读取oracle blob字段时,我读取后set到一个类的属性中,然后再get的时候就得不到了
java.sql.SQLException: 关闭的连接。
在 Blob content_blob= s.getcontent();时,出现连接关闭,本不应该这样的,一个get方法怎么会出现连接关闭,使我百思不得其解,郁闷了好半天,最后在调用的方法中将关闭的方法,即st.close(),rs.close()等都给屏蔽掉,再运行就好了。
在网上查了好一会儿,最后看到以下这段话:
“此段代码可以顺利的无异常的执行。由此我推测认为,主要是因为 resultset ,connection关闭引起的。这说明,在执行了查询操作之后,我们虽然可以得到一个blob对象,但是实际的内容并没有读入内存,也就是说,并没有读如到blob对象中,而此blob对象也就相当于一个对数据库中blob字段操作的一个引用,所以,此时,如果想从blob字段中读取数据,还是需要数据库连接的。
而上面的封装操作之后,数据库连接已经中断,所以,再读取数据时,就发生了异常。
”
以上红字问题也许可以说明原因。
所以得到查询集合后还是不能关闭,暂时到此,至于不关闭不会不造成垃圾或其他问题,再说吧。遇到问题再解决。
分享到:
相关推荐
在Java编程中,当你尝试与数据库进行交互,如更新包含BLOB字段的表时,可能会遇到`java.sql.SQLException: 内部错误: Unable to construct a Datum from the specified input`这样的异常。这个错误通常表明数据库...
在Java编程中,Blob(Binary Large Object)是用于存储大量二进制数据的数据类型,常在数据库中使用,如SQL Server和Oracle。本教程将详细解释如何将Byte数组转换为Blob对象,并将其存储到数据库中,特别关注图像...
以上就是通过JDBC读取Oracle数据库中CLOB字段并转换为String的基本过程。需要注意的是,由于CLOB可能包含大量数据,因此在读取时要考虑到性能和内存消耗。如果数据过大,可以考虑分块读取或使用流式处理,避免一次性...
### Java中读取Oracle数据库BLOB字段存储的图片方法详解 #### 一、背景与目的 在实际的应用开发过程中,经常会有将图片等二进制数据存入数据库的需求。Oracle数据库支持通过BLOB(Binary Large Object)类型来存储...
### Oracle Blob类型转换为文件读取的相关知识点 在软件开发过程中,尤其是在处理数据库中的二进制大对象(Binary Large Object, 简称BLOB)时,经常需要将数据库中的BLOB数据转换为文件进行读取或处理。本文将详细...
使用Java的`java.sql.DriverManager`类来建立与Oracle数据库的连接。这通常涉及到设置URL、用户名和密码: ```java import java.sql.*; public class BlobExample { public static void main(String[] args) { ...
- `java.sql.Connection`、`java.sql.DriverManager`、`java.sql.ResultSet`、`java.sql.SQLException` 和 `java.sql.Statement`:用于连接Oracle数据库并执行SQL查询。 2. **定义类和方法**: - 类名为 `...
为了实现这一目标,我们将从创建数据库表开始,然后逐步介绍如何使用Java读取图片文件并将其存储到Oracle数据库中的BLOB字段。 #### 二、准备工作 1. **安装Oracle数据库**:确保已经安装了Oracle数据库,并且拥有...
本文将深入探讨如何使用Java Database Connectivity (JDBC) API来操作Oracle数据库中的BLOB字段,包括创建表、插入和读取BLOB数据的方法。 #### 创建包含BLOB字段的表 在Oracle数据库中创建一个包含BLOB字段的表...
在Java编程中,Oracle数据库中的BLOB(Binary Large Object)类型用于存储大量的二进制数据,如图片、视频或文档。这篇博客文章“JAVA操作Oracle blob类型”将深入探讨如何在Java应用程序中有效地管理和操作Oracle...
在Java中,我们通常使用`oracle.jdbc.driver.OracleCallableStatement`或`oracle.jdbc.driver.OraclePreparedStatement`类来处理Blob字段。`setBlob()`方法用于设置Blob值,而`getBlob()`用于获取Blob数据。 2. ...
以下是对Oracle中Clob和Blob数据存取的Java代码示例及详细解释。 首先,确保你的项目已经引入了Oracle JDBC驱动(如ojdbc.jar)。然后,你需要创建一个与Oracle数据库的连接,这通常通过`DriverManager.get...
在 Java 中,我们可以使用 `oracle.sql.CLOB` 类来操作 Oracle 数据库中的 CLOB 型数据。以下是一个简单的示例,展示如何插入、读取 CLOB 值: ```java import java.io.BufferedReader; import java.io.IOException...
在Java的JDBC4.0版本中,Oracle数据库的BLOB类型数据操作变得更加方便。BLOB(Binary Large Object)是用来存储大对象,如图像、音频或视频文件等二进制数据的数据库字段类型。以下是对使用JDBC4.0操作Oracle中BLOB...
### Struts 使用 JDBC 的 Blob 字段保存和读取 Oracle 数据库 #### 背景介绍 在企业级应用开发中,经常会遇到需要处理文件上传下载的情况。这些文件可能包括图片、文档等各种类型的数据。传统的做法是将文件保存到...
Oracle数据库中,LongRaw和Blob是两种不同的数据类型,它们分别用于存储大对象(LOB)数据。LongRaw类型是Oracle的原始数据类型,用于存储二进制大对象,而Blob类型则是二进制大型对象,更适合存储大量的二进制数据...
import java.sql.SQLException; import org.hibernate.Hibernate; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg....
在关系型数据库中,如MySQL、Oracle或SQL Server,通常有特定的数据类型用于存储二进制数据,如BLOB(Binary Large Object)、VARBINARY或IMAGE。这些数据类型能容纳任意大小的二进制流,适合存储图片。 三、从...
在Java中,我们可以使用`java.io`包中的`FileInputStream`或`BufferedInputStream`类读取图片文件并将其转换为字节流。通过调用`read()`方法,我们可以逐字节地读取文件内容,然后将其存储到一个`byte[]`数组中。 ...
在Java Web应用中,我们通常使用JDBC(Java Database Connectivity)来连接和操作数据库。以下是一个简单的示例,展示如何从数据库中读取Blob类型的图片数据: ```java try (Connection conn = DriverManager.get...