往数据库里存图片BLOB大字段出错
我在网上找的存图片的程序,但是一直报错如下:
Exception in thread "main" java.lang.UnsupportedOperationException
	at sun.jdbc.odbc.JdbcOdbcResultSet.getBlob(Unknown Source)
	at blob.OracelBlobTest.writeBlob(OracelBlobTest.java:90)
	at blob.OracelBlobTest.main(OracelBlobTest.java:154)
这个语句有错误:   blob = (BLOB)rst.getBlob(1);
求达人帮忙~~~
程序如下:
package blob;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import oracle.sql.BLOB;
/**
  * 总结:
  * 1.JDBC的API:java.sql.Blob接口,只提供了BLOB的读取方法,没有提供写入的方法。
  * 2.ORACEL的API:oracle.sql.BLOB是一个类,它实现了java.sql.Blob接口,并且提供了向BLOB中写入数据的方法
  * 3.在向数据库中插入BLOB时,只能用ORACEL提供的API:oracel.sql.BLOB
  *   写入的步骤:1>插入一条记录,其中BLOB字段用oracle的空函数:empty_blob()代替。
  *             2>以加锁的方式读取刚插入的记录,
  *             3>利用oracle的oracle.sql.BLOB的getBinaryOutputStream()方法获取BLOB字段的输出流,向流中写入数据
  *             4>用被写入的BLOB数据,更新原记录
  * 4.在从数据库中读取BLOB时,既可以使用java.sql.Blob,也可以使用oracel.sql.BLOB
  *   读取的步骤:1>读取记录,获取BLOB字段的输入流,
  *             2>读取输入流中的数据,保存到一个地方。
  */
public class OracelBlobTest {
     private Connection conn;
     private final String DB_URL = "jdbc:odbc:oracle";
     private final String DB_DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";
     private final String DB_USER= "system";
     private final String DB_PASS= "123456";  
     /**
      * 获取数据库连接
      */
     private void initConnection() throws Exception {
         if(conn == null || conn.isClosed()){
             Class.forName(DB_DRIVER);
             conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);
             conn.setAutoCommit(false);
         }
     }  
     private void closeConnection(ResultSet rst, PreparedStatement psmt, Connection conn) throws Exception {
         if(rst != null){
             rst.close();
         }
         if(psmt != null){
             psmt.close();
         }
         if(conn != null){
             conn.close();
         }
     }  
     public OracelBlobTest() {
         try {
             initConnection();
         } catch (Exception e) {
             e.printStackTrace();
         }
     }  
     /**
      * 将指定文件写入到数据库中去。
      * 注意:因为JDBC中的API没有提供写入BLOB的方法,所以这里用到了oracle的API:oracle.sql.BLOB;它实现了接口:java.sql.Blob,同时提供了写入BLOB的方法。
      * 这里不能用java.sql.Blob
      */
     @SuppressWarnings("deprecation")
	public void writeBlob(String file) throws Exception {
         // 1.插入一条记录,其中blob字段用空函数代替
         // 2.以加锁的方式读取该记录
         // 3.向blob字段写数据,并执行更新操作。
         // 4.提交事务,关闭资源
         // 1.
         String sql = "insert into MYTABLE (ID, PIC) values (?, empty_blob())";
         PreparedStatement psmt = conn.prepareStatement(sql);
         psmt.setString(1, "200921090149");
         psmt.executeUpdate();  
         // 2.
         BLOB blob = null;
         OutputStream os = null;
         InputStream is = new FileInputStream(file);
         sql = "select PIC from MYTABLE where ID = ? for update";
         psmt =