CLOB、BLOB , CLOB與BLOB的區別

CLOB 定義

  數據庫中的一種保存文件所使用的類型。html

  Character Large Objectmysql

  SQL 類型 CLOB 在 JavaTM 編程語言中的映射關係。SQL CLOB 是內置類型,它將字符大對象 (Character Large Object) 存儲爲數據庫表某一行中的一個列值。默認狀況下,驅動程序使用 SQL locator(CLOB) 實現 Clob 對象,這意味着 CLOB 對象包含一個指向 SQL CLOB 數據的邏輯指針而不是數據自己。Clob 對象在它被建立的事務處理期間有效。sql

  在一些數據庫系統裏,也使用Text 做爲CLOB的別名,好比SQL Server數據庫

BLOB的含義編程

  BLOB (binary large object),二進制大對象,是一個能夠存儲二進制文件的容器。oracle

  在計算機中,BLOB經常是數據庫中用來存儲二進制文件的字段類型。編程語言

  BLOB是一個大文件,典型的BLOB是一張圖片或一個聲音文件,因爲它們的尺寸,必須使用特殊的方式來處理(例如:上傳、下載或者存放到一個數據庫)。oop

  根據Eric Raymond的說法,處理BLOB的主要思想就是讓文件處理器(如數據庫管理器)不去理會文件是什麼,而是關心如何去處理它。post

但也有專家強調,這種處理大數據對象的方法是把雙刃劍,它有可能引起一些問題,如存儲的二進制文件過大,會使數據庫的性能降低。在數據庫中存放體積較大的多媒體對象就是應用程序處理BLOB的典型例子。性能

CLOB和BLOB的區別

  CLOB使用CHAR來保存數據。 如:保存XML文檔。

       BLOB就是使用二進制保存數據。 如:保存位圖。

JAVA裏面對CLOB的操做

  在絕大多數狀況下,使用2種方法使用CLOB

  1 相對比較小的,能夠用String進行直接操做,把CLOB當作字符串類型便可

  2 若是比較大,能夠用 getAsciiStream 或者 getUnicodeStream 以及對應的 setAsciiStream 和 setUnicodeStream 便可

  讀取數據

  ResultSet rs = stmt.executeQuery("SELECT TOP 1 * FROM Test1");

  rs.next();

  Reader reader = rs.getCharacterStream(2);

  插入數據

  PreparedStatement pstmt = con.prepareStatement("INSERT INTO test1 (c1_id, c2_vcmax) VALUES (?, ?)");

  pstmt.setInt(1, 1);

  pstmt.setString(2, htmlStr);

  pstmt.executeUpdate();

  更新數據

  Statement stmt = con.createStatemet();

  ResultSet rs = stmt.executeQuery("SELECT * FROM test1");

  rs.next();

  Clob clob = rs.getClob(2);

  long pos = clob.position("dog", 1);

  clob.setString(1, "cat", len, 3);

  rs.updateClob(2, clob);

  rs.updateRow();

 

 

BLOBCLOB都是大字段類型,BLOB是按二進制來存儲的,而CLOB是能夠直接存儲文字的。其實兩個是能夠互換的的,或者能夠直接用LOB字段代替這兩個。可是爲了更好的管理ORACLE數據庫,一般像圖片、文件、音樂等信息就用BLOB字段來存儲,先將文件轉爲二進制再存儲進去。而像文章或者是較長的文字,就用CLOB存儲,這樣對之後的查詢更新存儲等操做都提供很大的方便。

oracle中Blob和Clob類型的區別

1.BLOB   
 BLOB全稱爲二進制大型對象(Binary   Large   Object)。它用於存儲數據庫中的大型二進制對象。可存儲的最大大小爲4G字節   
2.CLOB   
 CLOB全稱爲字符大型對象(Character   Large   Object)。它與LONG數據類型相似,只不過CLOB用於存儲數據庫中的大型單字節字符數據塊,不支持寬度不等的字符集。可存儲的最大大小爲4G字節

     一般像圖片、文件、音樂等信息就用BLOB字段來存儲,先將文件轉爲二進制再存儲進去。而像文章或者是較長的文字,就用CLOB存儲,這樣對之後的查詢更新存儲等操做都提供很大的方便。

JAVA裏面對CLOB的操做

  在絕大多數狀況下,使用2種方法使用CLOB

  1 相對比較小的,能夠用String進行直接操做,把CLOB當作字符串類型便可

  2 若是比較大,能夠用 getAsciiStream 或者 getUnicodeStream 以及對應的 setAsciiStream 和 setUnicodeStream 便可

  讀取數據

1 ResultSet rs = stmt.executeQuery("SELECT TOP 1 * FROM Test1");
2 rs.next();
3 Reader reader = rs.getCharacterStream(2);

  插入數據 

1 PreparedStatement pstmt = con.prepareStatement("INSERT INTO test1 (c1_id, c2_vcmax) VALUES (?, ?)");
2 pstmt.setInt(1, 1);
3 pstmt.setString(2, htmlStr);
4 pstmt.executeUpdate();

  更新數據

複製代碼
複製代碼
1 Statement stmt = con.createStatemet();
2 ResultSet rs = stmt.executeQuery("SELECT * FROM test1");
3 rs.next();
4 Clob clob = rs.getClob(2);
5 long pos = clob.position("dog", 1);
6 clob.setString(1, "cat", len, 3);
7 rs.updateClob(2, clob);
8 rs.updateRow();
複製代碼
相關文章
相關標籤/搜索