CLOB 定義 資料庫中的一種保存文件所使用的類型。 Character Large Object SQL 類型 CLOB 在 JavaTM 編程語言中的映射關係。SQL CLOB 是內置類型,它將字元大對象 (Character Large Object) 存儲為資料庫表某一行中的一個列值。預設情 ...
CLOB 定義
資料庫中的一種保存文件所使用的類型。
Character Large Object
SQL 類型 CLOB 在 JavaTM 編程語言中的映射關係。SQL CLOB 是內置類型,它將字元大對象 (Character Large Object) 存儲為資料庫表某一行中的一個列值。預設情況下,驅動程式使用 SQL locator(CLOB) 實現 Clob 對象,這意味著 CLOB 對象包含一個指向 SQL CLOB 數據的邏輯指針而不是數據本身。Clob 對象在它被創建的事務處理期間有效。
在一些資料庫系統里,也使用Text 作為CLOB的別名,比如SQL Server
BLOB的含義
BLOB (binary large object),二進位大對象,是一個可以存儲二進位文件的容器。
在電腦中,BLOB常常是資料庫中用來存儲二進位文件的欄位類型。
BLOB是一個大文件,典型的BLOB是一張圖片或一個聲音文件,由於它們的尺寸,必須使用特殊的方式來處理(例如:上傳、下載或者存放到一個資料庫)。
根據Eric Raymond的說法,處理BLOB的主要思想就是讓文件處理器(如資料庫管理器)不去理會文件是什麼,而是關心如何去處理它。
但也有專家強調,這種處理大數據對象的方法是把雙刃劍,它有可能引發一些問題,如存儲的二進位文件過大,會使資料庫的性能下降。在資料庫中存放體積較大的多媒體對象就是應用程式處理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();
BLOB和CLOB都是大欄位類型,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();