Java 中 CLOB 和字串之間的轉換

banq發表於2024-05-21

在 Java 中使用資料庫時,處理大型文字資料是一項常見任務。此外,字元大物件(CLOB)型別允許資料庫儲存大量文字資料。此外,在讀取或寫入資料庫時​​,通常需要在CLOB和String物件之間進行轉換。

在本教程中,我們將探討如何在 Java 中有效地執行此轉換。

 將CLOB轉換為字串
在這種方法中,我們將利用標準Java I/O(Reader和Writer )操作來高效處理來自SQL Clob物件的字元資料。 Reader從Clob讀取資料,然後對其進行處理並寫入StringWriter以轉換為String物件。

我們可以透過以下方式實現這一目標:

@Test
public void givenCLOB_whenConvertToString_thenCorrect() throws SQLException, IOException {
    Clob clob = new javax.sql.rowset.serial.SerialClob(<font>"This is a sample CLOB content.".toCharArray());
    String clobAsString;
    try (Reader reader = clob.getCharacterStream();
         StringWriter w = new StringWriter()) {
        char[] buffer = new char[4096];
        int charsRead;
        while ((charsRead = reader.read(buffer)) != -1) {
            w.write(buffer, 0, charsRead);
        }
        clobAsString = w.toString();
    }
    assertEquals(
"This is a sample CLOB content.", clobAsString);
}

在這裡,我們首先使用SerialClob建立一個包含示例內容的Clob物件。接下來,我們使用getCharacterStream()方法從Clob中獲取Reader,它允許我們從 Clob 中讀取字元資料。我們使用名為w的StringWriter來捕獲從Reader讀取的字元資料。

在帶有資源的 try 塊內,我們定義一個緩衝區 ( char[] buffer ) 來從Reader讀取字元。然後,我們將Reader中的字元讀入緩衝區,並使用write()方法將它們寫入StringWriter。

將Clob中的所有字元讀入StringWriter後,我們使用toString()方法將StringWriter的內容轉換為String物件,該方法將Clob的內容作為String物件提供。最後,我們使用assertEquals()方法來驗證colbAsString是否與原始Clob物件 的預期內容匹配。

將CLOB轉換為字串
讓我們深入瞭解如何將String物件轉換為Clob物件的實現:

@Test
public void givenString_whenConvertToCLOB_thenCorrect() throws SQLException {
    String sampleText = <font>"This is a sample text to be stored as CLOB.";
    char[] charArray = sampleText.toCharArray();
    Clob clob = new javax.sql.rowset.serial.SerialClob(charArray);
    assertEquals(sampleText, clob.getSubString(1, (int) clob.length()));
}

在這裡,我們定義一個名為SampleText的String物件,其中包含要儲存為Clob物件的文字。接下來,我們使用toCharArray()方法將String轉換 為字元陣列 ( charArray ) 。此步驟準備我們的文字以儲存在Clob物件中。

然後,我們使用其建構函式SerialClob(charArray)建立一個Clob物件,其中charArray表示要儲存的字元資料。

相關文章