orcl jdbc 存放图片blob

创建测试表

[sql]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. create table test_img(  
  2.   id    integer primary key,  
  3.   name  varchar2(32),  
  4.   image blob  
  5. );  
存储图片
[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. import java.io.FileInputStream;  
  2. import java.io.FileNotFoundException;  
  3. import java.io.IOException;  
  4. import java.io.InputStream;  
  5. import java.io.OutputStream;  
  6. import java.sql.Connection;  
  7. import java.sql.PreparedStatement;  
  8. import java.sql.ResultSet;  
  9. import java.sql.SQLException;  
  10. import oracle.sql.BLOB;  
  11.   
  12. public class Test {  
  13.   
  14.     public static void main(String[] args) {  
  15.         // TODO Auto-generated method stub  
  16.         PreparedStatement pst = null;  
  17.         ResultSet rs = null;  
  18.         Connection conn = ConnectionManager.getConnection();  
  19.         String sql = "insert into test_img(id,name,image) values(?,?,?)";  
  20.         try {  
  21.             pst = conn.prepareStatement(sql);  
  22.             pst.setInt(11);  
  23.             pst.setString(2"test");  
  24.             pst.setBlob(3, BLOB.empty_lob());  //插入空对象empty_blob()    
  25.             int ii = pst.executeUpdate();  
  26.   
  27.             OutputStream os = null;  
  28.             String q_sql = "select image from test_img where id = ? for update"// 锁定数据行进行更新    
  29.             pst = conn.prepareStatement(q_sql);  
  30.             pst.setInt(11);  
  31.             rs = pst.executeQuery();  
  32.             if (rs.next()) {  
  33.                 oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("image");  
  34.                 os = blob.getBinaryOutputStream();  
  35.                 InputStream is = new FileInputStream("D:\\image.jpg");  
  36.                 int i = 0;  
  37.                 while ((i = is.read()) != -1) {  
  38.                     os.write(i);  
  39.                 }  
  40.             }  
  41.             os.flush();  
  42.             os.close();  
  43.             ConnectionManager.closeAll(rs, pst, conn); // 关闭资源  
  44.   
  45.         } catch (SQLException e) {  
  46.             e.printStackTrace();  
  47.         } catch (FileNotFoundException e) {  
  48.             e.printStackTrace();  
  49.         } catch (IOException e) {  
  50.             e.printStackTrace();  
  51.         }  
  52.     }  
  53. }  
JDBC辅助类

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. import java.sql.Connection;  
  2. import java.sql.DriverManager;  
  3. import java.sql.ResultSet;  
  4. import java.sql.SQLException;  
  5. import java.sql.Statement;  
  6.   
  7. public class ConnectionManager {  
  8.     public static final String DRIVER = "oracle.jdbc.driver.OracleDriver";  
  9.     public static final String URL = "jdbc:oracle:thin:@localhost:1521/orcl";  
  10.     public static final String USERNAME = "test";  
  11.     public static final String PASSWORD = "test";  
  12.     /** 
  13.      * 通过静态代码块 注册数据库驱动 
  14.      */  
  15.     static{  
  16.         try {  
  17.             Class.forName(DRIVER);  
  18.         } catch (ClassNotFoundException e) {  
  19.             e.printStackTrace();  
  20.         }  
  21.     }  
  22.   
  23.     /** 
  24.      * 获得Connection 
  25.      *  
  26.      * @return 
  27.      */  
  28.     public static Connection getConnection() {  
  29.         Connection conn = null;  
  30.         try {  
  31.             conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);  
  32.         }catch (SQLException e) {  
  33.             e.printStackTrace();  
  34.         }  
  35.         return conn;  
  36.     }  
  37.   
  38.     /** 
  39.      * 关闭ResultSet 
  40.      * @param rs 
  41.      */  
  42.     public static void closeResultSet(ResultSet rs) {  
  43.         if (rs != null) {  
  44.             try {  
  45.                 rs.close();  
  46.             } catch (SQLException e) {  
  47.                 e.printStackTrace();  
  48.             }  
  49.         }  
  50.     }  
  51.   
  52.     /** 
  53.      * 关闭Statement 
  54.      * @param st 
  55.      */  
  56.     public static void closeStatement(Statement st) {  
  57.         if (st != null) {  
  58.             try {  
  59.                 st.close();  
  60.             } catch (SQLException e) {  
  61.                 e.printStackTrace();  
  62.             }  
  63.         }  
  64.     }  
  65.   
  66.     /** 
  67.      * 关闭Connection 
  68.      * @param conn 
  69.      */  
  70.     public static void closeConnection(Connection conn) {  
  71.         if (conn != null) {  
  72.             try {  
  73.                 conn.close();  
  74.             } catch (SQLException e) {  
  75.                 e.printStackTrace();  
  76.             }  
  77.         }  
  78.     }  
  79.     /** 
  80.      * 关闭全部 
  81.      * @param rs 
  82.      * @param sta 
  83.      * @param conn 
  84.      */  
  85.     public static void closeAll(ResultSet rs,Statement sta,Connection conn){  
  86.         closeConnection(conn);  
  87.         closeStatement(sta);  
  88.         closeResultSet(rs);  
  89.     }  
  90.   
  91. }  
效果如图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值