package oracle.clob;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import oracle.jdbc.driver.OracleDriver;
import oracle.sql.CLOB;
public class ClobTest {
String url = "jdbc:oracle:thin:@192.168.2.157:1521:orcl";
String user = "xj";
String pwd = "xj";
String text = "这是要插入到CLOB里面的数据";
/**
* @throws ClassNotFoundException
* @throws SQLException
* 数据库里已经建好表CLOB_TEST(ID NUMBER,STR CLOB);
*/
private void clobImport() throws ClassNotFoundException, SQLException {
// TODO Auto-generated method stub
DriverManager.registerDriver(new OracleDriver());
Connection conn = DriverManager.getConnection(url, user, pwd);// 得到连接对象
String sql = "insert into clob_test(id,str) values ('1',?)";// 要执行的SQL语句
PreparedStatement stmt = conn.prepareStatement(sql);// 加载SQL语句
// PreparedStatement支持SQL带有问号?,可以动态替换?的内容。
Reader clobReader = new StringReader(text); // 将 text转成流形式
stmt.setCharacterStream(1, clobReader, text.length());// 替换sql语句中的?
int num = stmt.executeUpdate();// 执行SQL
if (num > 0) {
System.out.println("ok");
} else {
System.out.println("NO");
}
stmt.close();
conn.close();
}
private void clobExport() throws ClassNotFoundException, SQLException,
IOException {
// TODO Auto-generated method stub
CLOB clob = null;
String sql = "select * from clob_test where id=1";
DriverManager.registerDriver(new OracleDriver());
Connection conn = DriverManager.getConnection(url, user, pwd);// 得到连接对象
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
String id = "";
String content = "";
if (rs.next()) {
id = rs.getString("id");// 获得ID
clob = (oracle.sql.CLOB) rs.getClob("str"); // 获得CLOB字段str
// 注释: 用 rs.getString("str")无法得到 数据 ,返回的 是 NULL;
content = ClobToString(clob);
}
stmt.close();
conn.close();
// 输出结果
System.out.println(id);
System.out.println(content);
}
// 将字CLOB转成STRING类型
public String ClobToString(CLOB clob) throws SQLException, IOException {
String reString = "";
Reader is = clob.getCharacterStream();// 得到流
BufferedReader br = new BufferedReader(is);
String s = br.readLine();
StringBuffer sb = new StringBuffer();
while (s != null) {// 执行循环将字符串全部取出付值给StringBuffer由StringBuffer转成STRING
sb.append(s);
s = br.readLine();
}
reString = sb.toString();
return reString;
}
/**
* @param args
* @throws IOException
* @throws SQLException
* @throws ClassNotFoundException
*/
// TODO Auto-generated method stub
public static void main(String[] args) throws IOException,
ClassNotFoundException, SQLException {
// TODO Auto-generated method stub
ClobTest clobtest = new ClobTest();
// read file
FileReader _frd = new FileReader(new File("D:\\DOS.txt"));
BufferedReader _brd = new BufferedReader(_frd);
String _rs = _brd.readLine();
StringBuffer _input = new StringBuffer();
while (_rs != null) {
_input.append(_rs);
_rs = _brd.readLine();
}
// System.out.println(_input.toString());
// 输入测试
clobtest.text = _input.toString();
clobtest.clobImport();
// 输出测试
// clobtest.clobExport();
}
}
分享到:
相关推荐
在Java应用程序中通过JDBC与Oracle交互时,正确地读取和写入CLOB类型的数据变得尤为重要。本文将详细介绍如何使用Java对Oracle中的CLOB类型字段进行操作。 #### CLOB简介 CLOB是Oracle数据库用于存储大型文本数据...
Java 中操作 Oracle 的 CLOB 字段是一种常见的操作,在实际开发中,我们经常需要在 Oracle 数据库中存储和读取大型文本数据,这时就需要使用 CLOB(Character Large OBject)类型的字段来存储这些数据。下面我们将...
在Java中,读取Oracle数据库中的CLOB字段可以通过以下步骤实现: 1. **获取CLOB对象**: 首先,通过执行查询语句并从结果集中获取CLOB对象。示例代码中的`lookmail[6]`表示从查询结果的第7个元素(下标为6)获取...
本文将详细介绍如何在Oracle中实现CLOB字段到字符串类型的转换,并探讨其中的关键技术和注意事项。 #### 一、CLOB概述 1. **定义**: - `CLOB`是Oracle数据库提供的一种特殊的数据类型,用于存储大文本数据。 - ...
我们使用了 Java 语言和 JDBC 驱动程序来实现数据的导出,并将 Image 类型数据写到文件中,然后将文件中的数据读取出来,并将其设置到 Oracle 的 CLOB 字段中。这种方法可以帮助我们实现不同数据库管理系统之间的...
java读取oracle数据库中clob字段 把oracle数据库中字段类型为clob的字段值以字符串的形式读取出来
本教程将介绍如何使用Java来读取和写入Oracle数据库中的CLOB字段。 首先,我们需要引入相关的Java和Oracle JDBC驱动库。在上述代码中,我们看到`import oracle.jdbc.driver.OracleDriver;`,这表示我们将使用Oracle...
查询CLOB字段时,我们可以使用ResultSet的getClob方法获取Clob对象,然后通过getClob.length()或getSubString方法读取数据。例如: ```java String sql = "SELECT my_clob_column FROM my_table WHERE id = ?"; ...
下面是一个Java方法`clobRead()`的具体实现,用于从Oracle数据库中读取CLOB字段的内容。 ```java public static String clobRead() throws Exception { DBlo_db = null; String detailinfo = ""; Connection ...
当我们使用DBLink连接远程数据库时,CLOB字段可能无法正确地传输和处理。这是因为CLOB字段的处理方式与其他数据类型不同。在远程数据库中,CLOB字段可能会被截断或损坏,从而导致数据的不一致。 解决方案 解决...
下面将详细介绍这两种数据类型以及如何在Oracle中使用它们存储和读取图片。 1. **CLOB数据类型**: `CLOB`数据类型用于存储大量的字符数据,最大可达到4GB。虽然主要用于存储文本,但在本例中,由于图片可以被转换...
JAVA对CLOB的操作 在JAVA中,操作Oracle数据库中的BLOB和CLOB类型字段是一种常见的需求。...通过JDBC和JNDI两种方式可以实现入库和出库操作,但是在实现时需要注意强制转换对象的类型,以便正确地操作BLOB和CLOB字段。
Mybatis 处理 CLOB、BLOB 类型数据 MyBatis 处理 CLOB、BLOB 类型数据是指在使用 MyBatis ...通过使用 MyBatis 处理 CLOB 和 BLOB 类型数据,可以方便地存储和读取大字段类型的数据,提高应用程序的性能和可扩展性。
总结一下,Python使用cx_Oracle处理Oracle中的CLOB字段时,关键点在于: 1. 使用`cx_Oracle.connect`建立数据库连接。 2. 创建游标对象并执行SQL查询。 3. 不要一次性使用`cursor.fetchall()`获取所有数据,尤其是...
Oracle数据库在处理大对象(LOB)类型,如Clob(Character Large Object)和Blob(Binary Large Object)时,有时需要专门的工具来进行高效且安全的数据导出。这些字段通常存储大量的文本或二进制数据,比如长篇文档...
以上就是通过JDBC读取Oracle数据库中CLOB字段并转换为String的基本过程。需要注意的是,由于CLOB可能包含大量数据,因此在读取时要考虑到性能和内存消耗。如果数据过大,可以考虑分块读取或使用流式处理,避免一次性...
创建包含CLOB字段的表是第一步。例如,创建一个名为TEMP的表,包含一个CLOB类型的字段temp_clob,可以使用以下SQL语句: ```sql CREATE TABLE TEMP ( name VARCHAR2(200), age NUMBER, temp_clob CLOB ) ...
在Java实体类中,表示CLOB字段的属性应为`String`类型,这样可以直接存储和读取文本内容。在Hibernate的映射文件中,使用`org.springframework.orm.hibernate3.support.ClobStringType`类型来映射这个属性,如下所...