在oracle数据库中如何插入CLOB值

轉貼:http://blog.csdn.net/cmtobby/

oracle中最常用的varcher2类型最多只能存储4000个字节的内容,一般情况下是能够满足用户的需求的。但是在一些特殊情况下(如要存储图片或者要存储的内容超过了4000个字节),varcher2就满足不了这个需求了。这个时候我们可以借助于oracle里面的大字段CLOB后者BLOB。举例如下:

        首先,在数据库中建一张表news,为了简单起见,只有一个字段content(CLOB)。做好准备工作后就可以开始我们的CLOB之旅了。

        以下是插入CLOB的代码:

         import java.sql.*;
         import java.io.*;

        public class TestClob{
               public void TestClob(){}
                      public static void main(String args[]){
                              try{
                                   Class.forName("oracle.jdbc.driver.OracleDriver");
                                  Connectionconn=DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:ora32","tjpt","tjpt");
 
                                 conn.setAutoCommit(false);
                                //第一步:插入一个空的CLOB
                                String sql1="insert into news(content,id) values (EMPTY_CLOB(),'1')";
                                PreparedStatement ps1=conn.prepareStatement(sql1);
                                ps1.executeUpdate();
                                ps1.close();
 
                                //第二步:取出该CLOB
                                String sql2="select content from news for update";
                                PreparedStatement ps2=conn.prepareStatement(sql2);
                                ResultSet rs2=ps2.executeQuery();
                                while (rs2.next()){
                                        oracle.sql.CLOB clob=(oracle.sql.CLOB)rs2.getClob(1);
                                        BufferedWriter out=new BufferedWriter(clob.getCharacterOutputStream());
                                        String content="1234";//假定这是新闻的内容,当然可以也可以是其他的内容
                                        out.write(content,0,content.length());
                                        out.close();
                                                               }
                               conn.commit();
                             }
         catch(Exception e){e.printStackTrace();}
  }

 }

既然插入进去了,那我们还得要检验一下:插进去的是不是你想插进去的内容?以下就是读取CLOB的代码:

import java.sql.*;
import java.io.*;
public class ReadClob{
 public void ReadClob(){}
 public static void main(String args[]){
 try{
  Class.forName("oracle.jdbc.driver.OracleDriver");
  Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ora32","tjpt","tjpt");                                                          String sql1="select content from news";
  PreparedStatement ps1=conn.prepareStatement(sql1);
  ResultSet rs1=ps1.executeQuery();
  while (rs1.next()){
   oracle.sql.CLOB clob=(oracle.sql.CLOB)rs1.getClob(1);
   BufferedReader in=new BufferedReader(clob.getCharacterStream());
   StringWriter out=new StringWriter();
   int c;
   while((c=in.read())!=-1){
    out.write(c);
   }
   String content=out.toString();
   System.out.println (content);//输出CLOB内容
  }
 }
 catch(Exception e){e.printStackTrace();}
 }
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Oracle数据库插入大段文本数据的解决方法主要有以下几种: 1. 使用INSERT语句:可以使用INSERT语句将大段文本数据直接插入到包含CLOB列的表。可以通过使用bind变量来优化插入效率,同时使用LOB locator进行处理。 2. 使用PL/SQL块:在PL/SQL可以使用DBMS_LOB包的SUBSTR和APPEND函数来处理CLOB数据插入操作。首先,使用SUBSTR函数将大段文本数据划分为较小的片段,然后逐个将这些片段使用APPEND函数插入CLOB。 3. 使用JAVA存储过程:如果在JAVA环境,可以编写JAVA存储过程来处理大段文本数据插入操作。通过调用JAVA存储过程,可以使用Oracle提供的LOB接口来处理CLOB数据插入。 无论使用哪种方法插入CLOB数据,都需要注意以下几点: 1. 考虑到CLOB数据的大小限制,默认情况下Oracle支持最大4GB的CLOB数据。需要确保目标表CLOB列的大小足够容纳要插入的文本数据。 2. 考虑到性能问题,尽量避免一次性插入过大的CLOB数据。可以将大文本数据划分为较小的片段进行逐个插入。 3. 在插入CLOB数据之前,需要确保目标表CLOB列已经创建,并且在插入操作之前分配了足够的空间。 总之,根据具体的需求和环境条件,可以选择使用不同的方法来向Oracle数据库插入大段文本数据。在插入过程,要考虑到数据大小限制、性能优化和CLOB列的准备等因素,以确保插入操作的顺利进行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值