前两天遇害到一个问题就是需要处理一字符型变量(该变量要作为参数传入存储过程执行),但其长度超长(长度小于32767时正常,大于时就报错)。后来想了很多的解决方案,最后决定先将其转换成CLOB,然后再将其以CLOB的方式传进去。
是如何转换的呢?经过狂搜GOOGLE,BAIDU,并且不停地测试后,终于成功了。我现将其转换代码贴出来,为大家共享,以便后来人和我一样,为其苦闷不已(就为这,我可是花了一整天的时间)
oracle.sql.CLOB clob = oracle.sql.CLOB.createTemporary(
conn, false,
oracle.sql.CLOB.DURATION_SESSION);
clob.open(oracle.sql.CLOB.MODE_READWRITE);
writer = clob.getCharacterOutputStream();
writer.write(parmSql.toCharArray());
writer.flush();
writer.close();
不要以为这样就行了,其实不然。这个我早就知道,难就难在驱动的问题(不要小看这,这可是个难点,如果你不知道的话,呵呵)。将驱动更换成最新OJDBC14。JAR。这个需要在ORALCE网上去下。
算了还是上传一份吧,现在的懒人也多。
分享到:
- 2008-09-04 15:32
- 浏览 11886
- 评论(1)
- 论坛回复 / 浏览 (0 / 4669)
- 查看更多
相关推荐
rtn = clob.getSubString((long) 1, (int) clob.length()); return rtn; } else if ("weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB".equals(in.getClass().getName())) { Method method = in.getClass()....
### ORACLE中CLOB字段转String类型 在Oracle数据库中,`CLOB`(Character Large Object)是一种用于存储大量文本数据的数据类型。由于其能够存储非常大的文本块(最大可达4GB),因此常被用于存储文章、报告或任何...
Oracle.ManagedDataAccess.dll是Oracle公司为.NET开发者提供的一个托管数据访问组件,它允许C#等.NET语言的应用程序直接与Oracle数据库进行交互,无需依赖传统的Oracle客户端软件。这个RAR压缩包包含了两个不同版本...
String content = clob.getSubString(1, (int) clob.length()); ``` 或者,如果需要流式处理大数据,可以使用`Reader`: ```java Reader reader = clob.getCharacterStream(); BufferedReader br = new ...
String content = clob.getSubString(1, (int) clob.length()); } ``` 3. Java调用Oracle存储过程处理输出游标: 存储过程是预编译的SQL语句集合,可以在数据库服务器端执行。在Java中,可以使用`...
pstmt1.setClob(2, oracle.sql.CLOB.empty_lob()); pstmt1.executeUpdate(); // 查询并更新第二条CLOB记录 String sqll2 = "select content from test where id = 2 for update"; ResultSet rss2 = stmt....
CLOB myClob = (oracle.sql.CLOB) cast2.getTheRealClob(); Writer out = myClob.getCharacterOutputStream(); out.write(content); out.flush(); out.close(); } ``` #### 五、Clob 类型简介 除了 Blob 外...
Oracle 数据类型 CHAR 对应的 JDBC 类型是 java.sql.Types.CHAR,Java 类型是 java.lang.String。VARCHAR2 对应的 JDBC 类型是 java.sql.Types.VARCHAR,Java 类型也是 java.lang.String。LONG 对应的 JDBC 类型是 ...
2. **全面的数据类型支持**:它支持Oracle的所有数据类型,包括Blob、Clob、BFile、XMLType等复杂类型。 3. **高级特性**:如PL/SQL块、游标、批处理操作、绑定变量和事件处理等。 4. **高级错误处理和诊断**:提供...
- `BLOB` 和 `CLOB`:Oracle 中的大对象类型,用于存储大量二进制或字符数据,映射为 `oracle.sql.BLOB` 和 `oracle.sql.CLOB`。 - `ARRAY` 和 `STRUCT`:用于存储数组和结构化数据,映射为 `java.sql.Array` 和 `...
Reader reader = clob.getCharacterStream(); BufferedReader br = new BufferedReader(reader); StringBuilder sb = new StringBuilder(); String line; while ((line = br.readLine()) != null) { sb....
clob.setAsciiStream(1, inputStream, length);` - 从String:`Clob clob = connection.createClob(); clob.setString(1, content);` 4. **读取Clob数据** 当我们需要从数据库读取Clob数据时,可以使用`getClob...
在J2EE开发中,处理大数据对象(如大文本或二进制数据)时,Oracle数据库的CLOB字段常被用来存储超过4000字节的信息。Spring和Hibernate框架结合使用可以有效地进行CLOB字段的操作。以下是实现这一功能的关键步骤和...
Reader reader = clob.getCharacterStream(); ``` **2. CLOB的插入与更新** - **插入CLOB数据**: - 使用`empty_clob()`函数分配一个CLOB locator。 - 通过SQL查询获取这个空的CLOB对象。 - 修改CLOB对象的内容...
Reader reader = clob.getCharacterStream(); ``` 3. **读取内容**: 使用`BufferedReader`来逐行读取CLOB中的内容,并将其存储到字符串缓冲区中。这里使用了`BufferedReader`来提高读取效率。 ```java ...
string sql = "INSERT INTO B_TSBH (BH, MC, SSBXBH, CONTENT) VALUES ('" + strTsbhBH + "', '" + strMC + "', '" + strSsbxbh + "', :clob)"; // 创建OracleConnection对象 using (OracleConnection conn = ...
InputStreamReader reader = new InputStreamReader(clob.getAsciiStream()); BufferedReader bufferedReader = new BufferedReader(reader); String line; StringBuilder sb = new StringBuilder(); while ((line ...
String sql = "SELECT my_clob_column FROM my_table WHERE id = ?"; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); if (rs.next()) { Clob clobData = rs.getClob("my_clob_...
BufferedReader br = new BufferedReader(clob.getCharacterStream()); StringBuilder sb = new StringBuilder(); String line; while ((line = br.readLine()) != null) { sb.append(line); } String ...