zoukankan      html  css  js  c++  java
  • clob

    写入clob数据
    
    import java.io.Writer;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    
    public class TestClobIn {
      public static void main(String args[]){
      String data="this is a long passage!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
      Writer outStream = null;
     //通过JDBC获得数据库连接
      try {
      Class.forName("oracle.jdbc.driver.OracleDriver");
      Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ewins", "scott", "tiger");
      con.setAutoCommit(false);
      Statement st = con.createStatement();
      //插入一个空对象empty_clob(),这个是必须的
      st.executeUpdate("insert into TESTCLOB(ID, NAME, CLOBATTR)values(2,'thename', empty_clob())");
      //锁定数据行进行更新,注意“for update”语句,这里不用for update锁定不可以插入clob
      ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1 for update");
      if (rs.next())
      {
      //得到java.sql.Clob对象后强制转换为oracle.sql.CLOB
      oracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob("CLOBATTR");
      outStream = clob.getCharacterOutputStream();
      //data是传入的字符串,定义:String data
      char[] c = data.toCharArray();
      outStream.write(c, 0, c.length);
      }
      outStream.flush();
      outStream.close();
      con.commit();
      con.close();
      } catch (Exception e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
      }
    }
    
    读取clob数据
    
    import java.io.InputStream;
    import java.io.Reader;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    
    public class TestClobOut {
      public static void main(String args[]){
      String data;
      Reader inStream=null;
      //获得数据库连接
      Connection con = ConnectionFactory.getConnection();//ConnectionFactory类是另外定义的,不必纠结
      con.setAutoCommit(false);
      Statement st = con.createStatement();
      //不需要“for update”
      ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1");
      if (rs.next())
      {
      java.sql.Clob clob = rs.getClob("CLOBATTR");
      inStream = clob.getCharacterStream();
      char[] c = new char[(int) clob.length()];
      inStream.read(c);
      //data是读出并需要返回的数据,类型是String
      data = new String(c);
      inStream.close();
      }
      inStream.close();
      con.commit();
      con.close();
      }
    }
    
    对比我们可以看出,无论出库入库,都要对clob数据类型进行查询操作,写入clob数据相对来说更复杂一点,需要先插入empty_clob()值,然后使用带“for update”的查询语句锁定更新行,最后实例化输出流并对clob类型字段数据进行写入操作;读取clob相对轻松一些,利用getCharacterStream方法得到输入流,从数据库中clob字段下,直接将数据读取出来。
    
    本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:https://www.linuxidc.com/Linux/2013-06/86381.htm
  • 相关阅读:
    某个牛人做WINDOWS系统文件详解
    常用ASP脚本程序集锦
    LINUX基础:文件安全与权限
    proftpd+mysql+quota
    apache2.0.49tomcat5.0.19jk2建立virtualHost
    URL Redirection(转) Anny
    顶级域名后缀列表(转) Anny
    \u4E00\u9FA5意义 Anny
    How to POST Form Data Using Ruby(转) Anny
    How to get rid of 'Enter password to unlock your login keyring' in Ubuntu(转) Anny
  • 原文地址:https://www.cnblogs.com/lxh520/p/8708429.html
Copyright © 2011-2022 走看看