Oracle的Blob字段比較特殊,他比long字段的性能要好很多,可以用來保存例如圖片之類的二進(jìn)制數(shù)據(jù)。
寫入Blob字段和寫入其它類型字段的方式非常不同,因?yàn)锽lob自身有一個(gè)cursor,你必須使用cursor對blob進(jìn)行操作,因而你在寫入Blob之前,必須獲得cursor才能進(jìn)行寫入,那么如何獲得Blob的cursor呢?
這需要你先插入一個(gè)empty的blob,這將創(chuàng)建一個(gè)blob的cursor,然后你再把這個(gè)empty的blob的cursor用select查詢出來,這樣通過兩步操作,你就獲得了blob的cursor,可以真正的寫入blob數(shù)據(jù)了。
看下面的JDBC的demo,把oraclejdbc.jar這個(gè)二進(jìn)制文件寫入數(shù)據(jù)庫表javatest的content字段(這是一個(gè)blob型字段)
import java.sql.*;
import java.io.*;
import oracle.sql.*;
public class WriteBlob {
public static void main(String[] args) {
try {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","fankai","fankai");
conn.setAutoCommit(false);
BLOB blob = null;
PreparedStatement pstmt = conn.prepareStatement("insert into javatest(name,content) values(?,empty_blob())");
pstmt.setString(1,"fankai");
pstmt.executeUpdate();
pstmt.close();
pstmt = conn.prepareStatement("select content from javatest where
}