java操作数据库中clob类型 之插入和查询

原创 2015年11月17日 16:52:31

一、插入

1)对于clob字段,首先插入empty_clob();
String sql = " insert into batchintfloadlog (centercode,filename,policydate,starttime,endtime,resultinfo) values ('"
+ this.ywBranchCode.substring(0, 4).concat("0000") + "','"
+ this.dataType + "',date '"
+ this.policyDate + "',"
+ "'"+ this.loadTime + "','"+ endtime +"',"
+ "empty_clob()";
ExeSQL eSQL = new ExeSQL(conn1);
eSQL.execUpdateSQL(sql);
//提前提交,防止插入日志发生异常时,日志表中无任何记录
//若发现resultinfo字段为null.则表明提交之后,插入日志方法insertIntfLoadLog()发生异常

//当然此处也可以不提交(业务需要)

try {
conn1.commit();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
2)使用select...forupdate语句查询(目的是查询并锁定当前数据行以便更新)
String sql2 = "select resultinfo from batchintfloadlog a where " +
"a.centercode='"+ this.ywBranchCode.substring(0, 4).concat("0000") + "' " +
"and a.filename='"+ this.dataType + "' " +
"and a.policydate= date'"+ this.policyDate +"' " +
"and a.starttime='"+ this.loadTime +"' and a.endtime='"+ endtime +"'" +
"for update";
try {
pstmt = conn1.prepareStatement(sql2);
rs = pstmt.executeQuery();
pstmt = null;

if(rs.next()){

Object obj = rs.getObject(1);
if("oracle.sql.CLOB".equals(obj.getClass().getName())){
clob = (CLOB) rs.getClob(1);
}<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
<span style="white-space:pre"> </span>//else if("weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB".equals(obj.getClass().getName())){
// Method method = obj.getClass().getMethod("getVendorObj",new Class[]{}); 
// clob = (CLOB) method.invoke(obj);
//}
//其中1表示的是sql3中的第几个问号
clob.putString(1, eMessage);
String sql3 = "update batchintfloadlog a set a.resultinfo=? where " +
"a.centercode='"+ this.ywBranchCode.substring(0, 4).concat("0000") + "' " +
"and a.filename='"+ this.dataType + "' " +
"and a.policydate= date'"+ this.policyDate +"' " +
"and a.starttime='"+ this.loadTime +"' and a.endtime='"+ endtime +"'";
pstmt = conn1.prepareStatement(sql3);
pstmt.setClob(1, clob);
pstmt.executeUpdate();
//提交
conn1.commit();
closeMethod(rs, pstmt,conn1);
}
} catch (Exception e) {
try {
conn1.rollback();
} catch (Exception e1) {
e1.printStackTrace();
}
closeMethod(rs, pstmt,conn1);
e.printStackTrace();
}
总结: i.先把clob字段类型给空出来,取而代之的是empty_clob(),插入数据库中

ii.使用select...for update把刚插入的数据给查出来,for update目的锁定当前数据行

iii.使用getObject(index)方法获得clob字段的引用C
iv.之后 ,对引用赋值 C.pubString(1,value);
v.pstmt.setClob(C);赋值
vi.conn.commit;//提交
二、查询

相对来说查询比较简单,就直接getString即可

rs.getString("clobField");
可参考:点击打开链接


java插入内容进入oracle的clob字段

1. 背景自己在拷贝数据表内容,进入另外一个数据库时。2. 说明java给oracle的clob字段插入内容。3. 代码片段获取clob字段内容:public static ArrayList doE...
  • loongshawn
  • loongshawn
  • 2016年01月05日 22:31
  • 4259

java插入clob字段

1)clob类型的数据不能直接insert,要先通过empty_clob()方法给它分配一个locator(同理,blob的用empty_blob()函数分配locator).然后把它select出来...
  • gaowenming
  • gaowenming
  • 2009年12月08日 15:21
  • 12845

java 插入oracle中clob字段

import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOE...
  • xinjirufen1
  • xinjirufen1
  • 2015年10月16日 10:27
  • 317

jdbc插入修改clob类型的两种方式

方法一: Connection con = dbl.loadConnection(); strSql = "insert into table1(id,a) values (1,EMPTY_CLOB(...
  • u012316120
  • u012316120
  • 2015年07月12日 15:44
  • 1694

JDBC从文件中读取内容写入CLOB字段的例子

  public void insertClob() throws Exception {  String content = String.valueOf("");  try {   Buffere...
  • wonder4
  • wonder4
  • 2007年06月19日 11:09
  • 2208

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

1、 读取操作 CLOB   java 代码 Java代码   //获得数据库连接            Connection con = ConnectionFactory.getCo...
  • zmx729618
  • zmx729618
  • 2016年06月02日 17:41
  • 2375

Java对Oracle中Clob类型数据的读取和写入

Java对Oracle中Clob数据类型是不能够直接插入的,但是可以通过流的形式对clob类型数据写入或者读取,网上代码并不算特别多,讲的也不是很清楚,我对网上资料进行了整理和总结,具体看代码: ...
  • h254931252
  • h254931252
  • 2016年10月18日 12:52
  • 5882

Oracle 插入CLOB字段的简易写法(纯脚本操作插入到CLOB字段)

版本:oracle 10g,11g 操作方式:spring jdbctemplate / jdbc 需求:项目模块中需要将字符插入到数据库,起初字符只有几百个字符,随着项目的进展,出现了4...
  • yygg329405
  • yygg329405
  • 2017年02月08日 15:14
  • 5315

在oracle数据库中如何插入CLOB值

轉貼:http://blog.csdn.net/cmtobby/oracle中最常用的varcher2类型最多只能存储4000个字节的内容,一般情况下是能够满足用户的需求的。但是在一些特殊情况下(如要...
  • fenglibing
  • fenglibing
  • 2006年04月19日 16:53
  • 17030

java-JDBC插入Clob字段

1)clob类型的数据不能直接insert,要先通过empty_clob()方法给它分配一个locator(同理,blob的用 empty_blob()函数分配locator).然后把它select出...
  • Z_Y_J_1_2_3
  • Z_Y_J_1_2_3
  • 2014年04月14日 08:48
  • 355
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java操作数据库中clob类型 之插入和查询
举报原因:
原因补充:

(最多只允许输入30个字)