CLOB用于存储大量的字符数据,读取CLOB的JDBC代码如下所示
import java.sql.*;
import java.io.*;
public class ReadClob {
public static void main(String[] args) {
PreparedStatement pstmt = null;
ResultSet rset = null;
BufferedReader reader = null;
Connection conn = null;
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:oracle:thin@127.0.0.1:1521:ORCL";
try {
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, "scott", "tiger");
pstmt = conn
.prepareStatement("select v_clob form ord where ORD_id =?");
pstmt.setInt(1, 1);
rset = pstmt.executeQuery();
while (rset.next()) {
Clob clob = rset.getClob(1);// java.sql.Clob类型
reader = new BufferedReader(new InputStreamReader(clob
.getAsciiStream()));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
程序代码从结果集中获取CLOB字段,再将其转化为IO流进行读取。那么,JDBC将大量自读数据写入CLOB字段的操作需要首先用“for update”字句查找CLOB字段,然后从结果集中获取CLOB字段并转化为oracle.sql.CLOB类型进行写入操作。
//写入操作
String stmtString = "select v_clob form ord where ord_id =? for update";
pstmt = conn.prepareStatement(stmtString);
pstmt.setInt(1, 2);
rset = pstmt.executeQuery();
while(rset.next()){
//造型为oracle.sql.CLOB
CLOB clob = (CLOB)rset.getClob(1);
String newClobDate = new String("NEW CLOOB DATE");
Writer writer = clob.getCharacterOutputStream();
//OutStream writer = clob.getAsciiOutputStream();
writer.write(newClobDate);
}
分享到:
相关推荐
查询CLOB字段时,我们可以使用ResultSet的getClob方法获取Clob对象,然后通过getClob.length()或getSubString方法读取数据。例如: ```java String sql = "SELECT my_clob_column FROM my_table WHERE id = ?"; ...
### 数据库读取CLOB字段 #### 概述 在Oracle数据库中,CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型。CLOB能够容纳4GB的文本信息,适用于存储如文章、报告或者XML文档等大型文本数据。...
3. **CLOB 数据读取**:无论是 `oracle.sql.CLOB` 还是通过 `getVendorObj()` 方法得到的 `oracle.sql.CLOB` 对象,都可以通过 `getAsciiStream()` 和 `getSubString()` 方法来读取 CLOB 的内容,并将其转换为字符串...
以下是如何读取CLOB的示例: ```java while (rs.next()) { Clob c = rs.getClob("WKT"); InputStream is = c.getAsciiStream(); // 获取ASCII流,如果包含非ASCII字符,可以使用getCharacterStream() String ...
3. **读取CLOB内容**:由于CLOB存储的是大量字符数据,我们需要逐段读取。可以使用`getSubString()`方法来获取特定范围内的字符串。 ```java String xmlContent = clob.getSubString(1, (int) clob.length()); ``` ...
// 读取Clob数据 BufferedReader reader = clob.getCharacterStream(); String content = IOUtils.toString(reader); // 读取Blob数据 InputStream blobStream = blob.getBinaryStream(); byte[] imageData ...
当我们需要从数据库读取Clob数据时,可以使用`getClob()`方法: ```java ResultSet rs = pstmt.executeQuery(); if (rs.next()) { Clob clobFromDB = rs.getClob("clob_column"); String content = ...
5. **读取Clob数据**:通过`Clob.getCharacterStream()`或`Clob.getSubString(long pos, int length)`获取字符数据流或子字符串。 6. **写入Blob数据**:将二进制数据流设置到Blob对象,然后在SQL语句中使用。例如...
以上就是通过JDBC读取Oracle数据库中CLOB字段并转换为String的基本过程。需要注意的是,由于CLOB可能包含大量数据,因此在读取时要考虑到性能和内存消耗。如果数据过大,可以考虑分块读取或使用流式处理,避免一次性...
读取CLOB数据主要通过Java.sql.Clob接口实现。下面是一个基本的读取CLOB数据的示例代码: ```java Connection con = ConnectionFactory.getConnection(); con.setAutoCommit(false); Statement st = con....
- CLOB和BLOB的读取速度通常比普通字段慢,因此在设计数据库表结构时应尽量避免频繁的读取操作。 总的来说,Spring通过JDBC提供了一套完善的接口和工具类来处理CLOB和BLOB,使得开发者无需直接与JDBC API打交道,...
在Java中,我们需要使用`ResultSet.getClob()`方法获取`Clob`对象,然后可以通过`Clob.getSubString()`或`Clob.getCharacterStream()`读取CLOB内容。例如: ```java ResultSet rs = stmt.executeQuery("SELECT ...
本文将详细介绍如何使用JDBC来操作Blob和Clob对象,包括创建含有Blob和Clob字段的表、插入和读取Blob/Clob数据的具体步骤。 #### 二、Derby简介 Apache Derby是一款高质量的、纯Java的嵌入式关系数据库引擎。它...
在示例中,使用`BufferedReader`读取并打印CLOB内容。对于BLOB字段,我们使用`ResultSet.getBlob()`方法获取`Blob`对象,同样可以获取其输入流进行处理。 总结来说,Oracle数据库中的CLOB和BLOB类型是处理大量文本...
对于从数据库读取Blob和Clob,JDBC4也提供了便捷的方法。`ResultSet`中的`getBlob`和`getClob`方法可以返回`Blob`或`Clob`对象,然后可以通过`Blob`的`getBinaryStream`或`getClob`的`getCharacterStream`方法获取...
- 调用`getClobCharacterStream()`或`getSubString()`来读取CLOB内容。 4. **写入CLOB**: - 创建一个`Clob`实例,可以使用`Connection.createClob()`方法。 - 将数据写入`Clob`,例如使用`setAsciiStream()`、`...
无论使用 JDBC 还是 JNDI,读取 CLOB 数据的操作都是相同的,因为它们都返回 `java.sql.Clob` 对象: ```java // 获取数据行 ResultSet rs = st.executeQuery("SELECT CLOBATTR FROM TESTCLOB WHERE ID=1"); if ...
- 从数据库中读取CLOB字段时,需要查询数据并获取`ResultSet`。然后,可以使用`getClob()`方法获取CLOB对象: ```java ResultSet rs = pstmt.executeQuery(); if (rs.next()) { CLOB clob = rs.getClob("str");...
例如,你可以这样读取Clob内容: ```java Clob clob = myEntity.getLargeText(); String text = clob.getSubString(1, (int) clob.length()); ``` 总结起来,在Hibernate中处理Oracle数据库中的Clob和Blob字段,...