- 浏览: 308056 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
z390174504:
恩,确实,我也遇到了,好像是库冲突了,我在一个库项目中,单独引 ...
VerifyError: Error #1053: Illegal override of… -
cl1154781231:
您好,为什么使用tk-filter不用过滤*.gzip???我 ...
ExtJS使用gzip压缩 -
YY008871:
仅限ie下登录成功或失败吗?
单点登录—基于cookie的简单实现(IE) -
蛋的懒蛋:
不好用啊,IE7是运行了,但是就是一启动就报错了,接着就关了 ...
IE7绿色版下载-转载 -
fireinwind:
harman001 写道 ,为什么我的id大写同样没事啊!- ...
Spring配置文件中id的第二个字母不能大写问题
package com.yysoft.a.test;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.yysoft.util.Debug;
import com.yysoft.util.Library;
import oracle.jdbc.driver.OracleTypes;
import oracle.sql.CLOB;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
updateClob();
getOtherClob();
}
public static void addClob(){
try {
String content="AAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCC";
char[] cc=content.toCharArray();
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@10.99.1.114:1521:orcl","e3baoan","e3baoan");
//手动提交
conn.setAutoCommit(false);
/* 以下表cjhtest中的cjhcontent字段时CLOB类型的 */
//插入一条数据,注意CLOB字段,需要先插入一个空的clob类型 empty_clob(),然后再单独更新clob字段
String sql = "insert into cjhtest(cjhid,cjhcontent) values(?,empty_clob())";
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setInt(1, 1);
int i1=pstmt.executeUpdate();
conn.commit();
pstmt=null;
if(i1>0){
System.out.println("插入成功");
}
ResultSet rs=null;
CLOB clob=null;
String sql1="select cjhcontent from cjhtest where cjhid=? for update";
pstmt=conn.prepareStatement(sql1);
pstmt.setInt(1, 1);
rs=pstmt.executeQuery();
if(rs.next()){
//取得刚才的HCONTENT的内容,也就是刚才添加的empty_clob()
clob=(CLOB) rs.getClob(1);
}
//需要用clob.getCharacterOutputStream()流方式输出
Writer wirte=clob.getCharacterOutputStream();
wirte.write(cc); //向大字段定数据
wirte.flush(); //强制写入
wirte.close(); //关闭
rs.close();
conn.commit();
pstmt.close();
conn.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void updateClob(){
try {
String content="ABCDEFGHIJKLMNOPQRSTUVWSYZ";
char[] cc=content.toCharArray();
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@10.99.1.114:1521:orcl","e3baoan","e3baoan");
conn.setAutoCommit(false);
String sql="update cjhtest set cjhcontent=empty_clob() where cjhid=?";
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setInt(1, 1);
int i1=pstmt.executeUpdate();
conn.commit();
pstmt=null;
if(i1>0){
System.out.println("清空成功");
}
ResultSet rs=null;
CLOB clob=null;
String sql1="select cjhcontent from cjhtest where cjhid=? for update";
pstmt=conn.prepareStatement(sql1);
pstmt.setInt(1, 1);
rs=pstmt.executeQuery();
if(rs.next()){
clob=(CLOB) rs.getClob(1);
}
Writer writer=clob.getCharacterOutputStream();
writer.write(cc);
writer.flush();
writer.close();
rs.close();
conn.commit();
pstmt.close();
conn.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void getClob(){
try {
String content="";
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@10.99.1.114:1521:orcl","e3baoan","e3baoan");
conn.setAutoCommit(false);
ResultSet rs=null;
CLOB clob=null;
String sql="select cjhcontent from cjhtest where cjhid=?";
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setInt(1, 1);
rs=pstmt.executeQuery();
if(rs.next()){
clob=(CLOB) rs.getClob(1);
}
if(clob!=null && clob.length()!=0){
content=clob.getSubString((long)1, (int)clob.length());
}
rs.close();
conn.commit();
pstmt.close();
conn.close();
System.out.println(content);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//取得的另一种方式
public static void getOtherClob(){
try {
String content="";
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@10.99.1.114:1521:orcl","e3baoan","e3baoan");
conn.setAutoCommit(false);
ResultSet rs=null;
CLOB clob=null;
String sql="select cjhcontent from cjhtest where cjhid=?";
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setInt(1, 1);
rs=pstmt.executeQuery();
if(rs.next()){
clob=(CLOB) rs.getClob(1);
}
if(clob!=null && clob.length()!=0){
content=Clob2String(clob);
}
rs.close();
conn.commit();
pstmt.close();
conn.close();
System.out.println(content);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 从大字段对象中读取数据,并转换成字符
* @return 大字段字符
*/
public static String Clob2String(CLOB clob)
{
String content = null;
StringBuffer stringBuf = new StringBuffer();
try
{
int length = 0;
Reader inStream = clob.getCharacterStream(); //取得大字侧段对象数据输出流
char[] buffer = new char[10];
while ((length = inStream.read(buffer)) != -1) //读取数据库 //每10个10个读取
{
for (int i=0; i<length; i++)
{
stringBuf.append(buffer[i]);
}
}
inStream.close();
content = stringBuf.toString();
}
catch(Exception ex)
{
System.out.println("ClobUtil.Clob2String:" + ex.getMessage());
}
return content;
}
/**
* 把字符串存入大字段对象中
* @param content 内容
* @return
*/
public static CLOB String2Clob(String content)
{
boolean flag = false;
if(content==null)
return null;
CLOB clob=null;
try
{
Writer outStream = clob.getCharacterOutputStream(); //取得大字段对象数据输入流
char[] data = Library.toChinese(content).toCharArray(); //把源字符串转换成char数组
outStream.write(data); //向大字段定数据
outStream.flush(); //强制写入
outStream.close(); //关闭
return clob;
}
catch(Exception ex)
{
System.out.println("ClobUtil.String2Clob:" + ex.getMessage());
return null;
}
}
}
发表评论
-
什么是java序列化,如何实现java序列化? .
2013-04-18 11:38 842Java 串行化技术可以使 ... -
javaMail邮件发送java.lang.SecurityException: Access to default session denied
2012-07-04 15:48 5331{exception=java.lang.SecurityEx ... -
java.lang.ClassCastException: weblogic.jdbc.wrapper.Blob_oracle_sql_BLOB
2012-05-12 18:46 1413开发时,向oracle写入blob数据时,如下: ... -
敏捷开发纵横谈
2012-03-07 15:31 701摘要: 在IT界中,“敏 ... -
Attribute value request.getAttribute("id") is quoted with " which must be
2009-11-25 12:55 2464<eoms:roomusr id="listU ... -
Flex CreateProcess: ...... error=2
2009-09-03 09:05 1791... -
Eclipse Subversive Installation with Eclipse 3.4.2
2009-09-02 22:03 1285I recently had the problem to i ... -
脚本中出现 window.open() access is denied - 拒绝访问 情况一则及分析
2009-09-02 14:11 1475也许这个状况有的朋友 ... -
java中产生随机数
2009-06-23 16:06 1011import java.util.Random; /** * ... -
Collection和Map支持
2009-05-18 20:29 1143WebWork支持多种方法来判断集合中的对象类型. 这是通过一 ... -
eclipse 不自动编译java文件的问题
2009-04-08 14:15 1745今天出现了eclipse 不自动编译java文件的问题,在网上 ... -
properties文件编码问题
2009-04-03 11:04 1051在阅读JAVA程序的时候,遇到了一个问题:propertie ... -
Java编程技术中汉字问题的分析及解决
2009-04-03 11:02 947在基于 Java 语言的编程 ... -
EL表达式
2009-04-03 10:56 1457EL语法 EL的语法很简单 ... -
为什么Java不支持创建范型数组?
2008-12-22 11:44 1117http://www.blogjava.net/myqiao/ ... -
每一个JAVA初学者都应该搞懂的问题
2008-12-11 17:25 646对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果 ... -
通过java或jsp向数据库存取二进制图片
2008-11-21 15:55 2601前几天突然看到学校音乐站上的图片原来是存储在数据库上的 ... -
把重要的业务日志异步批量写入数据库
2008-11-17 09:40 25531. 把重要的业务日志异 ... -
Checked vs UnChecked 异常 ,使用场合?
2008-10-24 17:04 3975异常的概念 ... -
Spring对JNDI的支持
2008-10-09 17:10 2073Spring中对于JNDI的访问,提供了便捷的方法,在Spri ...
相关推荐
在Java编程中,JDBC(Java Database Connectivity)是用于与各种数据库进行交互的一套标准API。当我们在处理大型文本...以上所述的增删改查方法是基础操作,实际开发中还应考虑事务管理、异常处理和性能优化等因素。
JDBC读写Oracle的CLOB字段
JDBC方式操作CLOB字段实例代码 。
这是因为 WebLogic 服务器为了更好地管理和操作数据库连接,会使用自己的包装类 `weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB` 来表示 CLOB 类型的数据,而不是直接使用 Oracle 提供的标准 `oracle.sql.CLOB` 类。...
根据给定文件的信息,本文将深入探讨如何在Java中操作Oracle数据库中的CLOB字段,包括添加和修改等操作。CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型,在处理如文章、评论等长文本时非常...
这篇文章将深入探讨如何通过JDBC有效地处理CLOB类型的数据。 1. **什么是CLOB?** CLOB是数据库中用于存储大文本或非结构化字符数据的数据类型。它能存储最多4GB的数据,非常适合保存长篇文章、HTML文档或任何其他...
### JDBC中操作Blob、Clob等对象 #### 一、简介 在JDBC(Java Database Connectivity)编程中,Blob和Clob是非常重要的数据类型。Blob(Binary Large Object)主要用于存储二进制大对象,如图像、音频文件等;而Clob...
JDBC实现对CLOB和BLOB数据类型的操作 在数据库中,存在两种类型的数据:CLOB(Character Large OBject)和BLOB(Binary Large OBject),它们用于存储大型数据,如文本、图片、音频、视频等。对CLOB和BLOB数据类型...
然而,在 Oracle8i 版本之前,对大字段 CLOB 仍然不支持在 where 子句直接的 Like 操作。这使得开发者无法直接对 CLOB 字段中的内容进行 Like 查找。幸运的是,通过使用 DBMS_LOB 包,我们可以实现对 CLOB 字段中的...
标题“jdbc_blob_clob.rar”暗示了这个压缩包文件包含的内容与Java Database Connectivity (JDBC) 中处理Blob和Clob对象相关的知识。Blob是Binary Large Object的缩写,用于存储大块二进制数据,如图片、音频或视频...
在Java中,当我们需要通过JDBC(Java Database Connectivity)接口与Oracle数据库交互时,处理CLOB字段可能会遇到一些挑战。这篇文档将详细阐述如何在JDBC中有效地读取和操作Oracle数据库的CLOB字段,并将其转换为...
以下是对`jdbc`处理`oracle`的`clob`字段进行详细分析的关键知识点: 1. **CLOB类型**: - Oracle数据库中,CLOB类型用于存储大文本对象,如XML文档、长篇文章等。 - 与BLOB(Binary Large Object)不同,CLOB...
这个问题在标题和描述中已经提及,即在对CLOB字段进行“like”操作时,查询速度会变得非常缓慢。 首先,尝试将CLOB字段直接转换为VARCHAR2类型进行查询,如以下语句所示: ```sql select * from table_name where ...
在Java编程中,Oracle数据库提供了对大型对象(Large Object)的支持,包括CLOB(Character Large Object)和BLOB(Binary Large Object)。这两种类型用于存储大量的文本数据(CLOB)和二进制数据(BLOB),例如...
在Java数据库连接(JDBC)中,Oracle数据库是广泛使用的数据库管理系统之一,它支持各种数据类型,包括大对象(LOB)类型,如Clob(Character Large Object)。本篇将深入探讨如何使用JDBC来操作Oracle数据库中的...
JAVA对CLOB的操作 在JAVA中,操作Oracle数据库中的BLOB和CLOB类型字段是一种常见的需求。然而,网络上关于JAVA对Oracle中BLOB、CLOB类型字段的操作说明往往不够全面、不够准确,甚至有的简直就是胡说八道。因此,...
在数据库中,CLOB(Character Large Object)类型用于存储大文本数据,如长篇文章或XML文档。在使用MyBatis框架进行数据操作时,我们可能会遇到CLOB类型数据的读写问题,尤其是在转换和插入数据库时。本篇将详细探讨...
3. 处理方式:对BLOB进行操作时,通常涉及二进制文件的读写,例如图片的上传和下载。CLOB操作则更偏向于文本内容的处理,如文本编辑、搜索等。 在Oracle数据库中,插入和查询BLOB和CLOB对象有特定的方法: 1. 插入...