Java对Oracle中Clob类型数据的读取和写入
来源:互联网 发布:linux怎么udp端口测试 编辑:程序博客网 时间:2024/05/19 22:52
Java对Oracle中Clob数据类型是不能够直接插入的,但是可以通过流的形式对clob类型数据写入或者读取,网上代码并不算特别多,讲的也不是很清楚,我对网上资料进行了整理和总结,具体看代码:
写入clob数据
import java.io.Writer;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class TestClobIn {
public static void main(String args[]){
String data="this is a long passage!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
Writer outStream = null;
//通过JDBC获得数据库连接
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ewins", "scott", "tiger");
con.setAutoCommit(false);
Statement st = con.createStatement();
//插入一个空对象empty_clob(),这个是必须的
st.executeUpdate("insert into TESTCLOB(ID, NAME, CLOBATTR)values(2,'thename', empty_clob())");
//锁定数据行进行更新,注意“for update”语句,这里不用for update锁定不可以插入clob
ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1 for update");
if (rs.next())
{
//得到java.sql.Clob对象后强制转换为oracle.sql.CLOB
oracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob("CLOBATTR");
outStream = clob.getCharacterOutputStream();
//data是传入的字符串,定义:String data
char[] c = data.toCharArray();
outStream.write(c, 0, c.length);
}
outStream.flush();
outStream.close();
con.commit();
con.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
读取clob数据
import java.io.InputStream;
import java.io.Reader;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class TestClobOut {
public static void main(String args[]){
String data;
Reader inStream=null;
//获得数据库连接
Connection con = ConnectionFactory.getConnection();//ConnectionFactory类是另外定义的,不必纠结
con.setAutoCommit(false);
Statement st = con.createStatement();
//不需要“for update”
ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1");
if (rs.next())
{
java.sql.Clob clob = rs.getClob("CLOBATTR");
inStream = clob.getCharacterStream();
char[] c = new char[(int) clob.length()];
inStream.read(c);
//data是读出并需要返回的数据,类型是String
data = new String(c);
inStream.close();
}
inStream.close();
con.commit();
con.close();
}
}
对比我们可以看出,无论出库入库,都要对clob数据类型进行查询操作,写入clob数据相对来说更复杂一点,需要先插入empty_clob()值,然后使用带“for update”的查询语句锁定更新行,最后实例化输出流并对clob类型字段数据进行写入操作;读取clob相对轻松一些,利用getCharacterStream方法得到输入流,从数据库中clob字段下,直接将数据读取出来。
- Java对Oracle中Clob类型数据的读取和写入
- Java对Oracle中Clob类型数据的读取和写入
- Java对Oracle中Clob类型数据的读取和写入
- Java对Oracle中Clob类型数据的读取和写入(转)
- Java对Oracle中Clob类型数据的读取和写入
- Java中读取和写入Oracle(CLOB)
- Java将数据写入Oracle的Clob字段中
- Oracle 11g中CLOB字段类型的数据读取
- Java中 读取Oracle clob类型
- ORACLE数据库中CLOB数据的插入和快速读取
- JAVA 读取Oracle-clob类型
- java读取oracle中Clob和Blob
- JAVA中读取ORACLE的CLOB字段
- Java对Oracle中Clob字段的写入及操作支持!
- Oracle中对XML格式数据的操作,CLOB类型转换XMLType类型
- Java 存储和读取 oracle CLOB 类型字段
- Java 存储和读取 oracle CLOB 类型字段
- 批量写入含Clob类型的数据
- 开箱即用!Android四款系统架构工具
- java util包学习(8)Map源码分析
- Android中Paint字体属性的设置
- opencv 正脸和侧脸检测
- 事件的封装
- Java对Oracle中Clob类型数据的读取和写入
- 多线程Event的使用例子
- C++ Virtual函数 .
- utorrent RSS + remote
- JavaScript中的事件处理
- Ruby的对象模型
- SimpleDateFormat的测试,此类不是线程安全的。
- 事件委托
- oj1125题