`
apple_wxs
  • 浏览: 104591 次
  • 性别: 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.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...

    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对oracle数据库中blob字段的处理

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

    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 类型是 ...

    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中sqllite数据库blob数据类型的存取.docx

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

    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]将Byte存入blob.rar

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

    java读取大字段blob类型

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

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

    在Java编程中,Blob(Binary Large Object)是用于存储大量二进制数据的数据类型,常被用在数据库中保存图片、文件等非文本信息。本教程将深入探讨如何使用Java进行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类型数据等...

    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字段的...

Global site tag (gtag.js) - Google Analytics