数据库教程:解析jdbc处理oracle的clob字段的详解

import java.io.bufferedoutputstream;import java.io.bytearrayinputstream;import java.io

import java.io.bufferedoutputstream;
import java.io.bytearrayinputstream;
import java.io.ioexception;
import java.io.inputstream;
import java.io.outputstream;
import java.io.reader;
import java.sql.clob;
import java.sql.connection;
import java.sql.resultset;
import java.sql.sqlexception;

复制代码 代码如下:
public class clobutil {

 /**
  *
  * @param insertsql 插入sql语句 有clob字段时,值必须设置成empty_clob()函数 例:insert into ba valus(1,empty_clob())
  * @param updatesql 带有修改的查询语句,并应增加条件判断.例:select * from ba where ba_id = ‘”+ba.getba_id()+”‘ for update
  * @param con 数据库链接
  * @param bigstring 要插入的clob值
  * @param updatecolumn 要插入的表字段名
  * @return
  * @throws sqlexception
  */
 public static boolean clobinsert(string insertsql,string updatesql,connection con,string bigstring,string updatecolumn ) throws sqlexception{
      // 结果集
      resultset rs = null;
      // 插入数据库的sql
      string query = insertsql;
      // 设置不自动提交
      con.setautocommit(false);
      // 定义预处理
      java.sql.preparedstatement pstmt = con.preparestatement( query);
      // 执行插入语句
      pstmt.executeupdate();
      //清空
      pstmt = null;
      // 执行更改
      query = updatesql;
         //显示执行带有修改方式的select
      pstmt = con.preparestatement(query);
      rs = pstmt.executequery();
      // 采用流的方式处理结果集
      if(rs.next()) 
      {
        // 得到指定的clob字段
        oracle.sql.clob singnaturedateclob = (oracle.sql.clob)rs.getclob(updatecolumn); 
        // 把clob字段放到输出流当中
        bufferedoutputstream out = new bufferedoutputstream(singnaturedateclob.getasciioutputstream());
        // 判断传入的数据是否为空
        if(bigstring!=null){
        try{
         // 把要保存的数据转换成输入流
         inputstream  is = (inputstream)(new   bytearrayinputstream(bigstring.getbytes())); 
      copystream( is, out );
      out.close();
    } catch (ioexception e) {
     // todo auto-generated catch block
     e.printstacktrace();
    }
        }
      }
      rs.close();
      con.commit();

   return true;
 }

 /**
  * 将输入流写入到输出流当中
  * @param is 输入流
  * @param os 输出流
  * @throws ioexception
  */
 public static void copystream( inputstream is, outputstream os )
 throws ioexception
 {
  byte[] data             = new byte[4096];
  int readed              = is.read(data);
  while (readed != -1)
  {
   os.write(data,0,readed);
   readed = is.read(data);
  }
 }

 /**
  * 通过clob对象返回字符串
  * @param c
  * @return
  */
 public static string getclobstring(clob c) { 
        try {

            reader reader=c.getcharacterstream();
            if (reader == null) {
                return null;
            }
            stringbuffer sb = new stringbuffer();
            char[] charbuf = new char[4096];
            for (int i = reader.read(charbuf); i > 0; i = reader.read(charbuf)) {
                sb.append(charbuf, 0, i);
            }
            return sb.tostring();
        } catch (exception e) {
            return “”;
        }
    }

}
需要了解更多数据库技术:解析jdbc处理oracle的clob字段的详解,都可以关注数据库技术分享栏目—计算机技术网(www.ctvol.com)!

www.ctvol.com true Article 数据库教程:解析jdbc处理oracle的clob字段的详解

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/802953.html

(0)
上一篇 2021年9月14日 下午3:09
下一篇 2021年9月14日 下午3:10

精彩推荐