• 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
  • 相关阅读:
    Leetcode: K-th Smallest in Lexicographical Order
    Leetcode: Minimum Number of Arrows to Burst Balloons
    Leetcode: Minimum Moves to Equal Array Elements
    Leetcode: Number of Boomerangs
    Leetcode: Arranging Coins
    Leetcode: Path Sum III
    Leetcode: All O`one Data Structure
    Leetcode: Find Right Interval
    Leetcode: Non-overlapping Intervals
    Socket网络编程--简单Web服务器(3)
  • 原文地址:https://www.cnblogs.com/lxh520/p/8708429.html
Copyright © 2020-2023  润新知