orade中插入大数据类型BLob

虽然用blob的情况不多,但是还是得了解一下,网上看得有点乱,而且没有看到从数据读blob的。在此总结一下:
数据库中的建表语句如下:

Sql代码 

1        createtable blogtest(id number primary key,name varchar2(20),picture blob); 

Java代码 

2        package August;  

3          

4        import java.io.FileInputStream;  

5        import java.io.FileOutputStream;  

6        import java.io.InputStream;  

7        import java.io.OutputStream;  

8        import java.sql.Connection;  

9        import java.sql.DriverManager;  

10    import java.sql.PreparedStatement;  

11    import java.sql.ResultSet;  

12    import java.sql.SQLException;  

13    import java.sql.Statement;  

14      

15    publicclass OracleBlobTest {  

16        public static void main(String[] args) {  

17      

18        }  

19        public static void readBlob() {  

20            try {  

21                Class.forName("oracle.jdbc.driver.OracleDriver");  

22                Connection conn = DriverManager.getConnection(  

23                        "jdbc:oracle:thin:@127.0.0.1:1521/july", "scott",  

24                        "snaillocke");  

25                Statement st = conn.createStatement();  

26                PreparedStatement ps = conn.prepareStatement("select * from BLOBTEST where id = ?");  

27                ps.setInt(1, 1);  

28                ResultSet rs = ps.executeQuery();  

29                rs.next();  

30                oracle.sql.BLOB imgBlob = (oracle.sql.BLOB) rs.getBlob(3);  

31      

32                //将二进制数据写入BLOB 

33                try{  

34                FileOutputStream outStream =new FileOutputStream("D:/oracleback.png");  

35                InputStream inStream = imgBlob.getBinaryStream();  

36                byte[] buf =new byte[10240];  

37                int len;  

38                    while ((len = inStream.read(buf)) > 0) {  

39                        outStream.write(buf, 0, len);  

40                    }  

41                    inStream.close();  

42                    outStream.close();  

43                }catch(Exception e) {  

44                    e.printStackTrace();  

45                }  

46                   

47      

48            }catch (ClassNotFoundException e) {  

49                e.printStackTrace();  

50            }catch (SQLException e) {  

51                e.printStackTrace();  

52            }  

53        }  

54        public static void writeBlob() {  

55            try {  

56                Class.forName("oracle.jdbc.driver.OracleDriver");  

57                Connection conn = DriverManager.getConnection(  

58                        "jdbc:oracle:thin:@127.0.0.1:1521/july", "scott",  

59                        "snaillocke");  

60                Statement st = conn.createStatement();  

61                //插入一个空对象empty_blob() 

62                //锁定数据行进行更新,注意for update语句 

63                PreparedStatement ps = conn.prepareStatement("insert into BLOBTEST (ID, NAME, PICTURE) values (1,'fang.jpg',?)");  

64                //通过ORALCE.SQL.BLOB/CLOB.EMPTY_LOB()构造空BLOB/CLOB对象 

65                ps.setBlob(1, oracle.sql.BLOB.empty_lob());  

66                ps.execute();  

67                ps.close();  

68      

69                //再次对读出BLOB/CLOB句柄 

70                ps = conn  

71                        .prepareStatement("SELECT * FROM BLOBTEST WHERE ID=? FOR UPDATE");  

72                ps.setInt(1, 1);  

73      

74                ResultSet rs = ps.executeQuery();  

75                rs.next();  

76      

77                oracle.sql.BLOB imgBlob = (oracle.sql.BLOB) rs.getBlob(3);  

78      

79                //将二进制数据写入BLOB 

80                try{  

81                FileInputStream inStream =new FileInputStream("D:/My Pictures/oracle.png");  

82                OutputStream outStream = imgBlob.getBinaryOutputStream();  

83                byte[] buf =new byte[10240];  

84                int len;  

85                    while ((len = inStream.read(buf)) > 0) {  

86                        outStream.write(buf, 0, len);  

87                    }  

88                    inStream.close();  

89                    outStream.close();  

90                }catch(Exception e) {  

91                    e.printStackTrace();  

92                }  

93      

94                //再将Blob字段更新到数据库 

95                ps = conn  

96                        .prepareStatement(" update BLOBTEST set PICTURE=?");  

97                ps.setBlob(1, imgBlob);  

98                ps.executeUpdate();  

99      

100         }catch (ClassNotFoundException e) {  

101             e.printStackTrace();  

102         }catch (SQLException e) {  

103             e.printStackTrace();  

104         }  

105     }  

106 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值