• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    解析jdbc处理oracle的clob字段的详解

    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 "";
            }
        }

    }

    您可能感兴趣的文章:
    • Java与Oracle实现事务(JDBC事务)实例详解
    • Java使用JDBC或MyBatis框架向Oracle中插入XMLType数据
    • Java开发Oracle数据库连接JDBC Thin Driver 的三种方法
    • java基于JDBC连接Oracle 11g Release2实例分析
    • Java使用JDBC连接Oracle_MSSQL实例代码
    • java使用jdbc链接Oracle示例类分享
    • JDBC连接Oracle数据库常见问题及解决方法
    • 如何在Eclipse中设置Oracle的JDBC
    • 通过JDBC连接oracle数据库的十大技巧
    • 使用JDBC4.0操作Oracle中BLOB类型的数据方法
    • Java使用JDBC实现Oracle用户认证的方法详解
    上一篇:Orcale权限、角色查看创建方法
    下一篇:Oracle中备份表的简单sql命令语句
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    解析jdbc处理oracle的clob字段的详解 解析,jdbc,处理,oracle,的,