在oracle資料庫中如何插入CLOB值

來源:互聯網
上載者:User

        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();}
     }}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.