Oracle的Clob、Blob、NClob三种大型对象,是用来保存较大的图形文件或带格式的文本文件,如Miceosoft Word文档,以及音频、视频等非文本文件,最大长度是4GB。
LOB有几种类型,取决于你使用的字节的类型,Oracle这些数据存储在数据库内部保存。可以执行读取、存储、写入等特殊操作。
在JAVA中,如果要对这些对象的字段进行insert、update操作的话,有特别的处理方式。举个例子:
建立表: CREATE TABLE clob_test(id number, value clob);
JAVA代码如下:
JAVA写入CLOB、BLOB对象总结:
Oracle的CLOB、BLOB等LOB对象在外部是无法直接通过INSERT来设置其值的,因此就需要类似上面的过程:
1)往clob字段里写入一个empty_clob(),即空的clob对象,相当于一个占位符。
2)通过SECELT刚刚抽入的clob对象,得到一个oracle.sql.CLOB对象,要注意的是在SELECT语句中要记得锁定行。即加上FOR UPDATE
3)通过oracle.sql.CLOB的一些写入数据的方法,将欲存入数据库lob字段的数据写入到LOB对象中
4)用UPDATE更新数据库的LOB字段,将刚刚的LOB对象传入到数据库
LOB有几种类型,取决于你使用的字节的类型,Oracle这些数据存储在数据库内部保存。可以执行读取、存储、写入等特殊操作。
在JAVA中,如果要对这些对象的字段进行insert、update操作的话,有特别的处理方式。举个例子:
建立表: CREATE TABLE clob_test(id number, value clob);
JAVA代码如下:
- import java.sql.*;
- import oracle.jdbc.OracleResultSet;
- import oracle.sql.CLOB;
- public class ClobTest {
- public static void main(String[] args)throws Exception{
- Class.forName("oracle.jdbc.driver.OracleDriver");
- Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","tiger");
- conn.setAutoCommit(false);
- //下面往数据库里加入一行,其中value字段设置其值为empty_clob(),即设置为空值,以便接下来更改
- PreparedStatement stmt = conn.prepareStatement("INSERT INTO clob_test VALUES (1,empty_clob())");
- stmt.execute();
- //下面执行SELECT查询,以取得一个oracle.sql.CLOB对象
- //然后调用CLOB对象的putChar()方法写入数据。
- stmt = conn.prepareStatement("SELECT value FROM clob_test FOR UPDATE");
- ResultSet rs = stmt.executeQuery();
- rs.next();
- CLOB clob = ((OracleResultSet)rs).getCLOB(1);
- clob.putChars(1,"this is a clob test!!!".toCharArray());
- //这里把上面得到的已经写入数据的clob对象上传到数据库
- stmt = conn.prepareStatement("UPDATE clob_test SET value=?");
- stmt.setClob(1,clob);
- stmt.execute();
- conn.commit();
- //检验结果。
- stmt = conn.prepareStatement("SELECT * FROM clob_test");
- rs = stmt.executeQuery();
- rs.next();
- Clob clob1 = rs.getClob("value");
- String s = clob.getSubString((long)1,(int)clob.length()-1);
- System.out.println(s);
- //收尾工作
- rs.close();
- stmt.close();
- conn.close();
- }
- }
Oracle的CLOB、BLOB等LOB对象在外部是无法直接通过INSERT来设置其值的,因此就需要类似上面的过程:
1)往clob字段里写入一个empty_clob(),即空的clob对象,相当于一个占位符。
2)通过SECELT刚刚抽入的clob对象,得到一个oracle.sql.CLOB对象,要注意的是在SELECT语句中要记得锁定行。即加上FOR UPDATE
3)通过oracle.sql.CLOB的一些写入数据的方法,将欲存入数据库lob字段的数据写入到LOB对象中
4)用UPDATE更新数据库的LOB字段,将刚刚的LOB对象传入到数据库