`
apple_wxs
  • 浏览: 104412 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

保存BLOB类型报java.lang.ClassCastException: oracle.sql.BLOB 的解决办法

    博客分类:
  • Java
阅读更多
默认tomcat的common/lib下是没有 ojdbc14.jar 这个jar包的,
但是如果要使用jndi方式配置数据库连接池的话,需要手工把ojdbc14.jar放到common/lib下,
当发布的工程里面需要实现向ORACLE数据库里存入一个BLOB字段时,会用到代码:
java.sql.Blob blob = rest.getBlob(1);         	
oracle.sql.BLOB blob2 = (oracle.sql.BLOB) blob;
outStream = blob2.getBinaryOutputStream();

这里oracle.sql.BLOB 就在 ojdbc14.jar 这个jar包里,
但如果工程里也包含了这个jar包,那么当tomcat启动后,运行到这段代码的时候,会因为程序中有两个ojdbc14.jar 而产出问题(驱动包重复),
报java.lang.ClassCastException: oracle.sql.BLOB 异常。
解决办法:
1、删除工程中的 ojdbc14.jar, 但程序会编译报错,这时需要引用一个外部包(去tomcat的common/lib下找)
2、在发布的工程里把 ojdbc14.jar 删掉(即去tomcat下的webapps下发布的工程的WEB-INF/lib下去删)。
注:
如果使用jdbc方式连接数据库, 程序运行时, 连接数据库的是 工程自己的代码,会使用工程里的ojdbc14.jar下找相关类,这时候没问题。
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@123.1.1.2:1521:orc", "xx", "xx"); 

如果使用jndi方式连接数据库(配置连接池),程序运行时,连接数据库的是 web服务器(tomcat),它会去自己的common/lib下找jar包, 如果这时工程里也就,就重复了。
分享到:
评论

相关推荐

    weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB 类型转换解决办法

    为了解决 WebLogic 下 Oracle CLOB 类型转换的问题,可以通过反射机制来调用 `weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB` 类的 `getVendorObj()` 方法,该方法可以返回一个 `oracle.sql.CLOB` 类型的对象,从而...

    mysql与oracle数据类型对应关系.docx

    本篇文章将详细介绍 MySQL、Oracle 和 Java 之间对应的数据类型,并讨论其在实际应用中的用法。 1. **MySQL 数据类型** - `BIGINT`: 用来存储大整数,对应 Oracle 的 `NUMBER(19,0)`,Java 中可使用 `java.lang....

    hibernate映射类型.doc

    1. `Integer` 或 `java.lang.Integer`: 映射到标准SQL类型的 `Integer` (Oracle的 `number`)。 2. `Long` 或 `java.lang.Long`: 映射到 `BigInt` (Oracle的 `number`)。 3. `short` 或 `java.lang.Short`: 映射到 `...

    java.sql.SQLSyntaxErrorException:

    java.sql.SQLSyntaxErrorException: The size of BLOB/TEXT data inserted in one transaction is greater than 10% of redo log size….. 解决方式: 从报错信息看是因为innodb_log_file_size太小,至于原因,在 ...

    java.sql.SQLException: 内部错误: Unable to construct a Datum from the specified input

    Q: I am working with Oracle database 8.1.7 and I have written a JAVA code to update the table which contains one BLOB field . I am using updateBinaryStream method of resultset to update the BLOB field...

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

    Oracle 数据类型 CHAR 对应的 JDBC 类型是 java.sql.Types.CHAR,Java 类型是 java.lang.String。VARCHAR2 对应的 JDBC 类型是 java.sql.Types.VARCHAR,Java 类型也是 java.lang.String。LONG 对应的 JDBC 类型是 ...

    java对oracle数据库中blob字段的处理

    在IT领域,尤其是在Java开发与Oracle数据库交互的过程中,处理BLOB(Binary Large Object)类型字段是一项常见且重要的任务。BLOB字段主要用于存储大量的二进制数据,如图像、音频、视频或任何其他非文本格式的数据...

    ojdbc-12.2.0.1.rar

    Oracle JDBC驱动程序是Java应用程序与Oracle数据库之间通信的桥梁,ojdbc-12.2.0.1.rar是一个包含Oracle JDBC驱动的压缩包,专为Java 8(JDK 8)环境设计。这个版本的驱动支持Oracle数据库的12c版本,提供了高效且...

    [java]将Byte存入blob.rar

    在Java编程中,Blob(Binary Large Object)是用于存储大量二进制数据的数据类型,常在数据库中使用,如SQL Server和Oracle。本教程将详细解释如何将Byte数组转换为Blob对象,并将其存储到数据库中,特别关注图像...

    Oracle驱动包ojdbc6-11.2.0.3

    Oracle驱动包ojdbc6-11.2.0.3是Oracle公司提供的Java数据库连接(JDBC)驱动程序,主要用于Java应用程序与Oracle数据库之间建立连接,进行数据交互。这个版本的驱动符合Java SE 6(Java Development Kit, JDK 6)的...

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

    在Java编程中,Blob(Binary Large Object)是用于存储大量二进制数据的数据类型,常被用在数据库中保存图片、文件等非文本信息。本教程将深入探讨如何使用Java进行Blob字段的操作,以实现将图片或文件保存到数据库...

    java读取大字段blob类型

    本文将详细介绍如何在Java中有效地读取`BLOB`类型的大字段,帮助解决程序员们常遇到的难题。 #### BLOB类型的概述 `BLOB`类型是关系型数据库中用于存储大量二进制数据的一种数据类型。它适用于存储诸如图片、声音...

    使用hibernate对oracle读取blob

    在Java开发中,Blob(Binary Large Object)类型用于存储大对象,如图片、音频或视频文件等。Oracle数据库是广泛使用的数据库系统,它支持Blob类型的字段。Hibernate作为一款流行的ORM(对象关系映射)框架,提供了...

    Oracle在PB中用OLE存取blob类型数据[归类].pdf

    Oracle是在PowerBuilder(PB)中使用OLE存取Blob类型数据的解决方案。该解决方案主要涉及到PB中使用OLE存取Blob类型数据的方法,包括建立数据库表、创建PB库、设置数据库连接、创建数据窗口、存取Blob类型数据等...

    java中sqllite数据库blob数据类型的存取.docx

    本文档旨在解决如何在Java环境下通过SQLite有效地存储和提取BLOB类型数据的问题。 #### 存储BLOB类型数据的方法 存储BLOB类型数据到SQLite数据库主要分为以下几个步骤: 1. **建立数据库连接** - 加载SQLite JDBC...

    Hibernate数据类型映射及ID

    5. **Blob**: 映射到`java.sql.Blob`,在SQL中对应`BLOB`类型。 #### 特殊类型映射 1. **Class**: 映射到`java.lang.Class`,在SQL中对应`VARCHAR`类型。 2. **Locale**: 映射到`java.util.Locale`,在SQL中对应`...

    JAVA中SQLlite数据库BLOB数据类型的存取.docx

    JAVA 中 SQLlite 数据库 BLOB 数据类型的存取 JAVA 中 SQLlite 数据库 BLOB 数据类型的存取是指在 JAVA 语言中使用 SQLlite 数据库来存储和读取大型二进制对象(BLOB),以便实现文件存储和读取的功能。本文将详细...

    oracle_java_blob

    在Java编程中,Oracle数据库是常用的存储系统,尤其在处理大量结构化和非结构化数据时,例如多媒体文件(如MP3)。Oracle数据库支持BLOB(Binary Large Object)类型,用于存储大容量的二进制数据。本篇将详细介绍...

    ORACLE中BLOB字段导入到SQL SERVER中的IMAGE字段

    本篇文章将详细探讨如何将ORACLE数据库中的BLOB(Binary Large Object)字段导入到SQL SERVER中的IMAGE字段,这通常涉及到数据转换、数据迁移以及可能的数据类型兼容性问题。 首先,让我们了解BLOB和IMAGE字段的...

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

    `TINYINT`、`SMALLINT`、`INTEGER` 和 `BIGINT`:这些是 SQL 标准的整数类型,分别映射到 `java.sql.Types.TINYINT`、`java.sql.Types.SMALLINT`、`java.sql.Types.INTEGER` 和 `java.sql.Types.BIGINT`,在 Oracle ...

Global site tag (gtag.js) - Google Analytics