zoukankan      html  css  js  c++  java
  • String怎么样可以转换成clob类型

    这是代码

    String kpiPrc=ParamUtils.getParameter(request, "kpi_prc", true);
    StringBuffer kpiProc=new StringBuffer();
    kpiProc.append(request.getParameter("kpi_proc".toString());
           oracle.sql.CLOB clob=null;
    try {
                   conn = ds.getConnection();
                   stmt=conn.createStatement();
                   conn.setAutoCommit(false);
                   sql="select kpi_proc from kpi_procedures where kpi_prc='"+kpiPrc+"'";
                   rs=stmt.executeQuery(sql);
                   while(rs.next()){
    //取出CLOB对象
    clob=(oracle.sql.CLOB)rs.getClob("kpi_proc");
       }
                   BufferedWriter o=new BufferedWriter(clob.getCharacterOutputStream());
       StringReader strReader=new StringReader(kpiProc.toString());
       BufferedReader in=new BufferedReader(strReader);
       int c=0;
       while((c=in.read())!=-1){
       o.write(c);
       }
       in.close();
       o.close();
                   stmt.close();
                   stmt = null;
                   conn.close(); // Return to connection pool
                   conn = null;   // Make sure we don't close it twice
                } catch (SQLException e) {
                   err=1;
                   System.out.println(e.toString());
                } finally {
                   // Always make sure result sets and statements are closed,
                   // and the connection is returned to the pool
                   if (rs != null){
                       try { rs.close(); } catch (SQLException e) { out.println(e.toString()); }
                       rs = null;
                   }
                   if (stmt != null) {
                       try { stmt.close(); } catch (SQLException e) { out.println(e.toString()); }
                       stmt = null;
                   }
                   if (conn != null) {
                       try { conn.close(); } catch (SQLException e) { out.println(e.toString()); }
                       conn = null;
                   }
                }

    报错:row containing the LOB value is not locked

    -----------------------------------------------------------------

    用下面的方法可以将JAVA的STRING 转化成CLOB类型,不过好像仅限于ORACLE,其他的数据库上我没有试过。
    private CLOB getCLOB( String clobData,Connection conn )
    throws Exception {
    CLOB tempClob = null; try {
    // create a new temporary CLOB

    tempClob = CLOB.createTemporary(getNativeConnection(conn) , false,
    CLOB.DURATION_SESSION ); // Open the temporary CLOB in readwrite mode to enable writing
    tempClob.open( CLOB.MODE_READWRITE );
    // Get the output stream to write
    Writer tempClobWriter = tempClob.getCharacterOutputStream( ); // Write the data into the temporary CLOB
    tempClobWriter.write( clobData ); // Flush and close the stream
    tempClobWriter.flush( );
    tempClobWriter.close( ); // Close the temporary CLOB
    tempClob.close( ); } catch ( Exception exp ) {
    // Free CLOB object
    throw exp;
    //do something
    }
    return tempClob;
    }

    如果使用连接池来获得数据库连接,有可能需要将数据库连接进行一下转化,使用以下代码:
    private static Connection getNativeConnection(Connection con) throws SQLException { if (con instanceof DelegatingConnection) {
    Connection nativeCon = ((DelegatingConnection) con).getInnermostDelegate(); // For some reason, the innermost delegate can be null: not for a
    // Statement''''s Connection but for the Connection handle returned by the pool.
    // We''''ll fall back to the MetaData''''s Connection in this case, which is
    // a native unwrapped Connection with Commons DBCP 1.1. return (nativeCon != null ? nativeCon : con.getMetaData().getConnection());
    }
    return con;
    }
  • 相关阅读:
    扩展运算符(Spread operator)
    增强的对象字面量,解构赋值
    ES6 模板字符串(template string)
    let和const
    svg实现放大效果
    svg制作风车旋转
    jquery实现某宝放大点击切换
    jQuery之文档处理
    jQuery之属性操作
    jQuery css操作
  • 原文地址:https://www.cnblogs.com/danghuijian/p/4400596.html
Copyright © 2011-2022 走看看