最近用到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
java操作oracle clob,基础教程,教你clob在java中的用法,简单易学。
运用Java如何存取Oracle中的CLOB类型字段
java操作oracle clob,基础教程,教你clob在java中的用法,简单易学。
Mybatis 处理 CLOB、BLOB 类型数据
java操作oracle clob,基础教程,教你clob在java中的用法,简单易学。
JDBC中操作Blob、Clob等对象 实例详细JDBC中操作Blob、Clob等对象 实例详细JDBC中操作Blob、Clob等对象 实例详细JDBC中操作Blob、Clob等对象 实例详细JDBC中操作Blob、Clob等对象 实例详细JDBC中操作Blob、Clob等...
大数据量,返回值虽然是CLOB,依然会报错; CLOB变量需要dbms_lob.createtemporary,临时表空间中,建立临时LOB。 大数据量,返回值虽然是CLOB,依然会报错; CLOB变量需要dbms_lob.createtemporary,临时表空间中,...
数据库中clob类型转换的问题 数据库中clob类型转换的问题
网络上很多关于JAVA对Oracle中BLOB、CLOB类型字段的操作说明,有的不够全面,有的不够准确。
java中(注解符)处理Clob(blob)类型
JAVA读CLOB对象 完整代码 very good very strong
ORACLE中CLOB字段转String类型
mybatis 对clob类型转换,解决clob类型数据插入数据库报异常问题
该类中包含有多个方法对数据库中的clob字段进行查询、插入、事物处理、批处理、调用存储过程等操作。使用的是myeclipse8.6,oracle11g,测试的时候执行手动建个表xml_buffer,包含id、xmlcontent字段即可,然后在...
主要介绍了详解jdbc实现对CLOB和BLOB数据类型的操作的相关资料,这里实现写入操作与读写操作,需要的朋友可以参考下
JDBC方式操作CLOB字段实例代码 。
主要是整合了jdbc处理clob类型的增删改查方法,有需要的同学可以看下
java调用oracle含有clob参数的存储过程