转-向Oracle中存取图片

写道
  1. 1。首先在Oracle 中创建一个表:
  2. create table blobtest(
  3.   ID int primary key,
  4.   pic blob);
  5. 注意:BLOB类型用 SQL*Plus 无法显示
  6. 2。编写BlobTest 类
  7. /**
  8. *
  9. */
  10. package test;
  11. import java.io.File;
  12. import java.io.FileInputStream;
  13. import java.io.FileOutputStream;
  14. import java.io.InputStream;
  15. import java.sql.Blob;
  16. import java.sql.Connection;
  17. import java.sql.DriverManager;
  18. import java.sql.PreparedStatement;
  19. import java.sql.ResultSet;
  20. import java.sql.Statement;
  21. /**
  22. * @author Administrator
  23. *
  24. */
  25. public class BlobTest {
  26. /**
  27. * @param args
  28. */
  29. Connection con = null;
  30. /*
  31. * 向数据库中添加BLOB数据
  32. */
  33. public void addBlob() {
  34. // 创建一个PreparedStatement实例
  35. try {
  36. PreparedStatement pstmt = con
  37. .prepareStatement("insert into blobtest values(1,?)");
  38. File file = new File("c:\\test.jpg");
  39. FileInputStream fis = new FileInputStream(file);
  40. // 把输入流设置为预处理语句的对象
  41. pstmt.setBinaryStream(1, fis, (int) file.length());
  42. // 执行更新
  43. pstmt.executeUpdate();
  44. pstmt.close();
  45. fis.close();
  46. } catch (Exception e) {
  47. // TODO 自动生成 catch 块
  48. e.printStackTrace();
  49. }
  50. }
  51. // // 创建一个表
  52. // public void createTable() {
  53. // try {
  54. // con.createStatement().execute(
  55. // "create table blobtest(id int,pic blob,"
  56. // + "constraint pk_blobtest primary key(id));");
  57. // } catch (Exception e) {
  58. // // TODO 自动生成 catch 块
  59. // e.printStackTrace();
  60. // }
  61. // }
  62. /**
  63. * 从数据库中读取BLOB数据
  64. *
  65. * @param args
  66. */
  67. public void getBlob() {
  68. // 创建一个Statement实例
  69. try {
  70. Statement stmt = con.createStatement();
  71. ResultSet rst = stmt.executeQuery("select * from blobtest where id=1");
  72. rst.next();
  73. // 获取BLOB数据和它的输入流,然后通过输入流把数据写到文件中
  74. Blob blob = rst.getBlob("pic");
  75. FileOutputStream out = new FileOutputStream(new File("c:\\k.jpg"));
  76. InputStream in = blob.getBinaryStream();
  77. int i;
  78. while ((i = in.read()) != -1)
  79. out.write(i);
  80. // 关闭输入、输出流
  81. in.close();
  82. out.close();
  83. } catch (Exception e) {
  84. // TODO 自动生成 catch 块
  85. e.printStackTrace();
  86. }
  87. }
  88. public static void main(String[] args) {
  89. // TODO 自动生成方法存根
  90. try {
  91. Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
  92. BlobTest test = new BlobTest();
  93. String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
  94. String user = "system";
  95. String pwd = "kimmy";
  96. test.con = DriverManager.getConnection(url, user, pwd);
  97. //test.createTable();
  98. test.addBlob();
  99. test.getBlob();
  100. } catch (Exception e) {
  101. // TODO 自动生成 catch 块
  102. e.printStackTrace();
  103. }
  104. }
  105. }
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值