如何用JSP处理Oracle中CLOB类型的字段

js|oracle

1.       CLOB字段的插入

clob类型的数据直接insert可能会因为字符过长而出错,所以要用对象形式插入.

示例:

首先,创建一个含CLOB字段的表:

create table test (id INTEGER, content clob);

 

然后插入空值

String strSql = “INSERT INTO TEST(id,content) values(‘0001’,?) ”;

con.setAutoCommit(false);  //conn为Connection对象

//创建并实例化一个CLOB对象

CLOB clob = new CLOB((OracleConnection)con);

   clob = oracle.sql.CLOB.createTemporary((OracleConnection)con,true,1);

//对CLOB对象赋值

   clob.putString(1,formateSingleQuotes(Content));

   OracleConnection OCon = (OracleConnection)con;

   OraclePreparedStatement pstmt = (OraclePreparedStatement)OCon.prepareCall(strSql);

   pstmt.setCLOB(1,clob);

   int i  = pstmt.executeUpdate();

   pstmt.close();

   OCon.commit();

   OCon = null;

con = null;      

Boolean flag = true;

if(i <=0)

 {

      flag = false;

 }

 

if (flag == true)

 {

       out.print( "<script>alert('成功保存!'); </script>");

}

 else

 {

       out.print( "<script>alert('保存数据时出错,请检查你输入的数据格式是否符合要求');self.history.back ();</script>");

 }

 

注意:

一定不要忘记引入包:import oracle.sql.*,oracle.jdbc.driver.*

 

2.       CLOB类型的修改

 

对CLOB字段的修改除了sql语句外其他和插入相同

String strSql = “UPDATE TEST set content=? Where Id=’0001’ ”;

con.setAutoCommit(false);  //conn为Connection对象

//创建并实例化一个CLOB对象

CLOB clob = new CLOB((OracleConnection)con);

   clob = oracle.sql.CLOB.createTemporary((OracleConnection)con,true,1);

//对CLOB对象赋值

   clob.putString(1,formateSingleQuotes(Content));

   OracleConnection OCon = (OracleConnection)con;

   OraclePreparedStatement pstmt = (OraclePreparedStatement)OCon.prepareCall(strSql);

   pstmt.setCLOB(1,clob);

   int i  = pstmt.executeUpdate();

   pstmt.close();

   OCon.commit();

   OCon = null;

con = null;      

Boolean flag = true;

if(i <=0)

 {

      flag = false;

 }

 

if (flag == true)

 {

       out.print( "<script>alert('成功保存!'); </script>");

}

 else

 {

       out.print( "<script>alert('保存数据时出错,请检查你输入的数据格式是否符合要求');self.history.back ();</script>");

 }

 

时间: 2024-08-16 15:30:07

如何用JSP处理Oracle中CLOB类型的字段的相关文章

ibatis操作oracle中CLOB类型的值

问题描述 ibatis操作oracle中CLOB类型的值 页面我是用了Struts标签,ibatis需要操作oracle中的CLOB类型的数据,该怎么操作?ibatis配置文件中需要设置什么样的类型于其对应.java中的实体类我是不是需要定义成CLOB类型呢?> 解决方案 可以配置ParameterMap和ResultMap就可以方便的实现对LOB的读写了,而且不用去实现任何类.只需要配置就可以了. 如: 这是返回的Clob 这是参数里面包含CLob 解决方案二: 解决方案三: 解决方案四: 解

对于oracle中blob类型的字段如何查询!

问题描述 因为oracle数据库表中,有一个字段是blob类型的,我在页面上用关键字查询的时候,如何查询!只需写出关键sql语句或者思路即可!不甚感激!thanks! 解决方案 解决方案二: 解决方案三:blob字段不能直接查询如果需要直接查询,说明你的数据库的结构设计有问题如果非得要查询的话,可以考虑把blob转string然后在自己的程序里处理如果blob字段非常大和多,建议考虑lucene类似全文检索的方案.sql不是干这事的.解决方案四:楼上说的对.解决方案五:引用2楼runer的回复:

Oracle中Clob类型处理解析

系统环境 xp+.net2.0+oracle9i 表结构(由于是测试,表结构随便建了一张) XX 字段名 类型 ID VARCHAR2(70) TEST CLOB 测试 方式1:直接将CLOB的值拼写在SQL语句中. 代码: string id = Guid.NewGuid().ToString(); OracleCommand cmd = Conn.CreateCommand(); cmd.CommandText = "insert into xx(id,test) values('"

mybaits中,如果通过foreach批量插入CLOB类型的字段?

问题描述 mybaits中,如果通过foreach批量插入CLOB类型的字段?<insertid="insert"parameterType="java.util.List">insertintoABC(YJMC,JTTKNR,FBJG,FBSJ,QLWYBS,CREATE_TIME,LASTMODIFY_TIME,ORG_CODE,BATCH_NO,STAGE_FLAG,ADU_FLAG,CARRIER_TYPE,CARRIER_NAME,ID)SEL

如何获取oracle中某表的字段类型。

问题描述 如何获取oracle中某表的字段类型. 解决方案 使用JDBC就可以的// 获取数据库的连接这些操作我就省了PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM H_TEST");ResultSet rs = pstmt.executeQuery();ResultSetMetaData rsmd = rs.getMetaData(); //获取字段名if(rsmd != null){ int count

使用JDBC4.0操作Oracle中BLOB类型的数据方法_oracle

在JDBC4.0推出后,它的从多的特性正在受到广泛地关注.下面通过本文给大家介绍JDBC4.0操作Oracle中BLOB类型的数据的方法. 需要的jar包 使用ojdbc6.jar 在/META-INF/MANIFEST.MF里可以看到Specification-Version: 4.0 建表 create sequence seq_blobmodel_id start with 1 increment by 1 nocache; create table blobmodel ( blobid

如何在Oracle中导入额外的字段作为空值

问:我们将我们的Oracle数据库移植到了新的环境中.有一些客户表同时存在于两个数据库中,但是在新环境中的数据库的那些表有一些额外的字段.你能帮助我使用导入/导出工具吗?这样我就可以或者导入新的空值,或者从原来的环境中导出为空值,然后再导入了.非常感谢. 答: 这里有两个类似的选项可以让你从源数据库中转换数据到目标数据库中,同时在目标系统中保存额外的字段.使用导出/导入工具不会让你在目标数据库中保存那些字段.你可以使用带有导出的查询选项,但是这只能允许某些行导出,而不能允许只有某些字段(列)导出

用jsp对oracle的clob字段进行操作

js|oracle CLOB一般用来存放超大广西,如果是2进制文件一般用BLOB.假设col2是CLOB:写操作: String sql = "insert into tb_commendtemp (col1,col2) values('111',?)";string s = "长文本";StringBufferInputStream sbin = new StringBufferInputStream(s);PreparedStatement ps = query

ORACLE 中NUMBER类型默认的精度和Scale问题

在ORACLE数据库中,NUMBER(P,S)是最常见的数字类型,可以存放数据范围为10^-130~10^126(不包含此值),需要1~22字节(BYTE)不等的存储空间.P 是Precison的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过38个有效数字.S是Scale的英文缩写,表示从小数点到最低有效数字的位数,它为负数时,表示从最大有效数字到小数点的位数.有时候,我们在创建表的时候,NUMBER往往没有指定P,S的值,那么默认情况下,NUMBER的P.S的值分别是多少呢?相信这个问