`
bestxiaok
  • 浏览: 455637 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java oracle clob string 大字符串存储

阅读更多
这几天在在往数据库里更新一个大字符串,忙了好几天终于试出来一个好方法,现在拿出来分享下:
public class ClobTest {

	static String url = "jdbc:oracle:thin:@10.12.10.18:1521:orcl";
	static String user = "cwbe1_9999";
	static String pwd = "or777";
	static String text = "这是要插入到CLOB里面的数据,更新数据!" + "update";

	private static int clobImport() throws ClassNotFoundException, SQLException {
		DriverManager.registerDriver(new OracleDriver());
		Connection conn = DriverManager.getConnection(url, user, pwd);// 得到连接对象
		String sql = "insert into ETLNEEDPARAM(F_KEY,F_VALUE) values ('defaultpo',?)";// 要执行的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();
		return num;
	}

	private static int clobUpdate(String key) throws ClassNotFoundException, SQLException {

		DriverManager.registerDriver(new OracleDriver());
		Connection conn = DriverManager.getConnection(url, user, pwd);// 得到连接对象
		String sql = "update ETLNEEDPARAM set F_VALUE = ? where F_KEY = ? ";// 要执行的SQL语句
		PreparedStatement stmt = conn.prepareStatement(sql);// 加载SQL语句
		// PreparedStatement支持SQL带有问号?,可以动态替换?的内容。
		Reader clobReader = new StringReader(text); // 将 text转成流形式
		stmt.setString(2, key);
		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();
		return num;
	}

	private static String clobExport() throws ClassNotFoundException, SQLException, IOException {

		CLOB clob = null;
		String sql = "select F_VALUE from ETLNEEDPARAM where F_KEY ='test1'";
		DriverManager.registerDriver(new OracleDriver());
		Connection conn = DriverManager.getConnection(url, user, pwd);// 得到连接对象
		PreparedStatement stmt = conn.prepareStatement(sql);
		ResultSet rs = stmt.executeQuery();
		String content = "";
		if (rs.next()) {
			clob = (oracle.sql.CLOB) rs.getClob("F_VALUE"); // 获得CLOB字段str
			// 注释: 用 rs.getString("str")无法得到 数据 ,返回的 是 NULL;
			content = ClobToString(clob);
		}
		stmt.close();
		conn.close();
		return content;
	}

	// 将字CLOB转成STRING类型

	public static 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();
		// 执行循环将字符串全部取出付值给StringBuffer由StringBuffer转成STRING
		while (s != null) {
			sb.append(s);
			s = br.readLine();
		}
		reString = sb.toString();
		return reString;
	}

	public static void main(String[] args) throws IOException,ClassNotFoundException, SQLException {			
		// System.out.println(clobImport());
		System.out.println(clobUpdate("fmo"));
		System.out.println(clobUpdate("epo"));

		// System.out.println(clobExport());

	}
分享到:
评论
2 楼 bestxiaok 2011-05-04  
SetBigStringTryClob
myy 写道
楼主还不知道 10g 的 jdbc 驱动支持 “SetBigStringTryClob”这个东东吧?

没试过,我经验还少,多多指教啊。。。
1 楼 myy 2011-05-04  
楼主还不知道 10g 的 jdbc 驱动支持 “SetBigStringTryClob”这个东东吧?

相关推荐

    ORACLE中CLOB字段转String类型

    本文将详细介绍如何在Oracle中实现CLOB字段到字符串类型的转换,并探讨其中的关键技术和注意事项。 #### 一、CLOB概述 1. **定义**: - `CLOB`是Oracle数据库提供的一种特殊的数据类型,用于存储大文本数据。 - ...

    将长于4000字符的字符串转化为CLOB类型存入数据库

    下面将详细介绍如何在C#环境下通过Oracle.NET接口实现将长于4000字符的字符串转化为CLOB类型并存入Oracle数据库的过程。 ### 一、CLOB类型的简介 CLOB是Oracle数据库中用于存储大量文本数据的一种数据类型,它可以...

    java读写oracle clob字段

    在Java编程中,Oracle的CLOB(Character Large Object)数据类型用于存储大量字符数据,如文本文件、HTML文档等。本教程将介绍如何使用Java来读取和写入Oracle数据库中的CLOB字段。 首先,我们需要引入相关的Java和...

    CLOB 字段类型报错 ORA-01704: 文字字符串过长的解决

    然而,当你尝试向CLOB字段插入数据时,如果超过了Oracle规定的最大限制,就会遇到“ORA-01704: 文字字符串过长”的错误。这个错误通常意味着你试图插入的字符串超过了Oracle数据库允许的最大长度,对于VARCHAR2类型...

    向Oracle数据库的CLOB属性插入数据报字符串过长错误

    更理想的解决方案是使用数据库提供的API或者存储过程来处理CLOB数据,通过流(Stream)的方式进行大对象的读写,这样可以避免一次性加载整个字符串到内存,有效防止因字符串过长引发的错误。 例如,你可以使用...

    读取oracle数据库中clob字段的值

    使用`BufferedReader`来逐行读取CLOB中的内容,并将其存储到字符串缓冲区中。这里使用了`BufferedReader`来提高读取效率。 ```java StringBuffer sb = new StringBuffer(); BufferedReader br = new ...

    ibatis oracle clob

    在Oracle数据库中,CLOB类型用于存储最多4GB的非二进制大字符串。处理CLOB时,我们需要注意以下几点: 1. **插入CLOB数据**:在iBATIS的映射文件中,需要使用`<clob>`标签来处理CLOB字段。例如,当向数据库插入CLOB...

    iBATIS操作Oracle CLOB数据

    CLOB是一种用于存储大量字符数据的数据类型,它可以容纳最大4GB的单个文本对象。在Oracle中,CLOB通常用于存储大段的文本,如文章、报告或者XML文档。 iBATIS是一个Java库,它允许开发者将SQL语句与Java代码分离,...

    weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB 类型转换解决办法

    无论是 `oracle.sql.CLOB` 还是通过 `getVendorObj()` 方法得到的 `oracle.sql.CLOB` 对象,都可以通过 `getAsciiStream()` 和 `getSubString()` 方法来读取 CLOB 的内容,并将其转换为字符串形式。 4. **异常处理*...

    oracle传入一个字符串,调用webservice

    示例中给出的是一个名为`P_UTL_HTTP`的存储过程,该过程接受一个字符串参数`AS_STR`,并将此字符串嵌入到SOAP请求中。 ```plsql PROCEDURE P_UTL_HTTP(AS_STR VARCHAR2) IS -- ... ``` ### 步骤二:构建SOAP请求 ...

    关于Oracle的 Clob数据类型在Hibernate中的应用小结

    在Hibernate中,如果Clob字段的值是字符串,可以通过将Clob字段映射为String类型,让Hibernate自动处理转换。这种方式简单易用,但可能不适合非常大的文本,因为可能会导致内存溢出。 3.3 直接使用Clob类型: 对于...

    java中xml文件的处理及oracle中xmltype的插入和读取.pdf

    Java 中 XML 文件的处理及 Oracle 中 XMLType 的插入和读取 Java 中 XML 文件的处理是指在 Java 应用程序中处理和操作 XML 文件的过程。在 Oracle 数据库中,XMLType 是一种特殊的数据类型,用于存储和处理 XML ...

    String_clob.zip_oracle

    与之相对的是,Java中的`String`对象是用于处理字符串的基本类,它是不可变的且适用于较小的数据片段。在Java应用程序与Oracle数据库交互时,通常需要在两者之间进行`String`与CLOB类型的转换。以下是对这个主题的...

    oracle的数据类型_java中Clob型详细用法_struts中实现图片上传功能

    5. LONG: 用于存储长字符串,最大长度可达 2GB,但不支持字符串搜索,已被 BLOB、CLOB 和 NCLOB 等大对象类型逐渐取代。 6. RAW(n) 和 LONG RAW: 二进制数据类型,RAW 用于存储较小的二进制文件,最大长度为 2000 ...

    asp.net操作oracle clob字段demo

    在ASP.NET中与Oracle数据库交互时,有时我们需要处理CLOB(Character Large Object)字段,这类字段用于存储大文本或二进制数据。本篇将详细讲解如何在ASP.NET中操作Oracle的CLOB字段。 首先,要进行Oracle数据库...

    java调用oracle含有clob参数的存储过程.docx

    在Java编程中,调用Oracle数据库的存储过程并传递CLOB(Character Large Object)类型参数是一项常见的任务。CLOB类型用于存储大文本数据,如XML文档、长篇报告或者日志记录。以下是一个详细的步骤解释如何实现这个...

    Hibernate存储Clob字段的方式总结

    4. 在Hibernate的配置文件中添加"hibernate.connection.SetBigStringTryClob"属性,这对于Oracle数据库是必须的,以确保可以将大字符串存储为Clob类型。 5. 进行存取测试以验证配置的有效性。 传统存储方式则是将...

    clob 的读存问题

    在IT领域,尤其是在数据库操作与数据管理中,CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型,常用于保存如文章、报告、注释等大文本信息。本文将详细解析CLOB的读写问题,包括其在Oracle...

    Oracle 插入超4000字节的CLOB字段的处理方法

    string conn = "Data Source=客户端指定连接字符串;User ID=user;Password=mima"; OracleConnection Con = new System.Data.OracleClient.OracleConnection(conn); Con.Open(); string cmdText = "INSERT INTO ...

    hibernate动态映射表处理oracle的clob类型

    - 使用Blob/Clob接口:直接操作Clob接口进行读写,而不是将其转换为字符串或其他数据类型,以减少转换开销。 通过以上内容,你应该对在Hibernate中动态映射Oracle 10g的CLOB类型有了深入理解,这将帮助你在实际...

Global site tag (gtag.js) - Google Analytics