`

Java操作含Clob或者NClob数据类型的存储过程实例

    博客分类:
  • J2SE
阅读更多
最近用到Oracle中的NClob,在网上找来几天,终于东拼西凑,搞出来啦,拿来跟大家分享一下!

创建一个简单的表test

CREATE TABLE "SINI"."TEST" 
   ( "ID" NUMBER(10,0), 
"CONTENT" CLOB
   )


--向表test中插入数据的存储过程 insertTest
CREATE OR REPLACE PROCEDURE insertTest
( 
myid test.id%TYPE, 
mycontent test.content%TYPE

) 
AS 
BEGIN 
--向表中插入数据 
INSERT INTO test(id,content) VALUES(myid,mycontent); 
END insertTest;

测试类:

package com.sini.notice.test;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;

import oracle.jdbc.OracleConnection;
import oracle.sql.CLOB;

public class Test {

private Connection conn = null;
private String url = null;
private String user = null;
private String password = null;

public Test() {
   url = "jdbc:oracle:thin:@192.168.1.108:1521:hqh";
   user = "sini";
   password = "sini";
}


public Connection getConnection() {

   try {
    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
    conn = DriverManager.getConnection(url, user, password);
    System.out.println("connect is ok");
    return conn;
   } catch (InstantiationException e) {
    e.printStackTrace();
    return null;
   } catch (IllegalAccessException e) {
    e.printStackTrace();
    return null;
   } catch (ClassNotFoundException e) {
    e.printStackTrace();
    return null;
   } catch (SQLException e) {
    e.printStackTrace();
    return null;
   }
}

public void testInsert() {
   try {
    Connection con = getConnection();
    CallableStatement proc = con.prepareCall(
      "{ call insertTest(?,?) }");
    proc.setInt(1, 1);
    CLOB clob = new CLOB((OracleConnection) con);
      clob = oracle.sql.CLOB.createTemporary(con,false,1);
    //对CLOB对象赋值
      clob.putString(1,"fffffffffjggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggffffffffffffff");
      proc.setClob(2,clob);
      
    proc.execute();
   } catch (SQLException ex2) {
    ex2.printStackTrace();
   } catch (Exception ex2) {
    ex2.printStackTrace();
   } finally {
    try {
     if (conn != null) {
      conn.close();
     }
    } catch (SQLException ex1) {
    }
   }
}

    public static void main(String[] args) {
     Test test = new Test();
   test.testInsert();
    }

}


注意:如果出现错误“无法从套接字读取更多的数据”,

解决办法:将Oracle9i的JAR包换成Oracle10g的JAR包即可(我用的是ojdbc14.jar,1.29M,注意大小哦)。(此信息来自http://www.100631.com/blog/article.asp?id=318)

分享到:
评论

相关推荐

    oracle对大对象类型操作:blob,clob,nclob,bfile

    Oracle数据库系统支持对大型数据对象(LOBs,Large Objects)的操作,这包括BLOB、CLOB、NCLOB和BFILE四种类型。每种类型都有其特定的用途和特性,适用于存储不同类型的大数据。 1. BLOB(Binary Large Object): ...

    java存储oracle中的clob类型

    CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型,在Oracle数据库中被广泛使用,可以支持最大4GB的数据量。在Java编程中,为了能够有效地与Oracle数据库中的CLOB类型交互,Java提供了`java.sql...

    运用Java如何存取Oracle中的CLOB类型字段

    CLOB是Oracle数据库用于存储大型文本数据的一种数据类型,它可以存储最大为4GB的字符数据。在处理CLOB数据时,通常会涉及到以下几种常见操作: - 插入CLOB数据 - 更新CLOB数据 - 查询CLOB数据 - 删除CLOB数据 #### ...

    java中操作oracle的CLOB字段精解

    CLOB(Character Large OBject)是一种 Oracle 数据库中的数据类型,用于存储大型文本数据。CLOB 类型的字段可以存储大量的文本数据,最大可以达到 4GB。 2. 在 Java 中操作 CLOB 字段 在 Java 中操作 CLOB 字段...

    Mybatis 处理 CLOB、BLOB 类型数据

    CLOB 类型用于存储文本数据,可以存储长文本、文章、备注等信息。在 Oracle 数据库中,CLOB 类型对应的数据库类型是 CLOB,在 MySQL 中对应的类型是 TEXT 或 LONGTEXT。 BLOB 类型用于存储二进制数据,可以存储图片...

    java调用oracle含有clob参数的存储过程.doc

    Java 调用 Oracle 含有 CLOB 参数的存储过程是一种常用的数据库操作方式,下面是该过程的详细介绍: 1. 连接数据库 在 Java 中连接 Oracle 数据库需要使用 Oracle 的 JDBC 驱动程序,在本文中使用的驱动程序为 ...

    java读写oracle clob字段

    在Java编程中,Oracle的CLOB(Character Large Object)数据类型用于存储大量字符数据,如文本文件、HTML文档等。本教程将介绍如何使用Java来读取和写入Oracle数据库中的CLOB字段。 首先,我们需要引入相关的Java和...

    JAVA对clob的操作

    CLOB操作与BLOB操作类似,但是在获取java.sql.Clob对象后需要强制转换为oracle.sql.CLOB对象,以便使用getCharacterOutputStream()方法将数据写入CLOB字段。 三、出库操作 出库操作可以使用ResultSet.getBlob()或...

    java操作clob

    CLOB 类型用于存储大量文本数据,如长篇文章或文档。本教程将详细介绍如何在 Java 中使用 JDBC 和 JNDI 连接访问 Oracle 数据库,对 CLOB 字段进行读写操作。 首先,我们创建两个测试表,一个包含 BLOB 字段,一个...

    java中(注解符)处理Clob(blob)类型

    在 Java 中,处理 Clob 类型需要使用 @Lob 注解来指定该字段为大规模字符数据类型。@Lob 注解可以与 @Basic 注解结合使用,以确保正确地读取和写入 Clob 类型的数据。例如: ``` @Column(name="SUBSTANCE", ...

    jdbc 处理clob类型字段

    当我们在处理大型文本数据时,例如XML文档、长篇文章或者大段代码,数据库通常会提供CLOB(Character Large Object)类型来存储这类数据。本主题主要探讨如何使用JDBC有效地操作Oracle数据库中的CLOB类型字段,包括...

    ORACLE 存储过程返回结果集,拼接为字符串输出为clob

    大数据量,返回值虽然是CLOB,依然会报错; CLOB变量需要dbms_lob.createtemporary,临时表空间中,建立临时LOB。 大数据量,返回值虽然是CLOB,依然会报错; CLOB变量需要dbms_lob.createtemporary,临时表空间中,...

    oracle的数据类型_java中Clob型详细用法_struts中实现图片上传功能

    在 Oracle 数据库中,数据类型是用来定义和存储不同类型数据的格式。以下是一些常见的 Oracle 数据类型: 1. CHAR(n): 定长字符串类型,最多可存储 2000 个字节。如果未指定长度,默认为 1 个字节。在处理汉字时,...

    jdbc连接例子 Oracle CLOB转换为String java调用存储过程之输出游标

    在提供的`ConnUtils2.java`文件中,很可能包含了以上所述的Java数据库操作代码,例如建立JDBC连接、处理CLOB数据类型以及调用Oracle存储过程的方法。分析这个文件可以帮助我们更好地理解实际应用中的实现细节,包括...

    mybatis 对clob类型转换

    在处理CLOB类型时,MyBatis需要将Java对象中的String或Reader类型数据转换为CLOB,以便存储到数据库中。 1. **CLOB类型数据的插入** 当你需要将一个字符串或者Reader对象插入到CLOB字段时,MyBatis默认可能无法...

    数据库中clob类型转换的问题 数据库中clob类型转换的问题

    在探讨“数据库中CLOB类型转换的问题”这一主题时,我们首先需要理解CLOB(Character Large Object)数据类型的基本概念及其在数据库中的应用场景。随后,将深入分析CLOB类型转换过程中可能遇到的问题,并提供相应的...

    spring2通过jdbc的方式读取、更新数据库的clob或者blob类型的数据

    - 更新操作时,可能会使用`SimpleJdbcCall`来执行存储过程,因为存储过程通常更适合处理复杂的数据操作,包括CLOB和BLOB的更新。 5. **注意事项**: - 处理CLOB和BLOB时,需要特别注意内存管理,因为大数据对象...

    ORACLE中CLOB字段转String类型

    在Oracle数据库中,`CLOB`(Character Large Object)是一种用于存储大量文本数据的数据类型。由于其能够存储非常大的文本块(最大可达4GB),因此常被用于存储文章、报告或任何其他大型文本内容。然而,在处理CLOB...

    详解jdbc实现对CLOB和BLOB数据类型的操作

    对CLOB和BLOB数据类型的操作是非常重要的,特别是在使用Java数据库连接(JDBC)时。本文将详细介绍JDBC实现对CLOB和BLOB数据类型的操作,包括读取和写入操作。 CLOB数据类型 CLOB数据类型用于存储大型字符数据,如...

Global site tag (gtag.js) - Google Analytics