首页 > 开发 > Java > 正文

JDBC编程实现文件、图片的存储方法

2024-07-13 09:55:49
字体:
来源:转载
供稿:网友

这篇文章主要介绍了JDBC编程实现文件、图片的存储方法,以实例形式分析了Java基于JDBC操作数据库的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了JDBC编程实现文件、图片的存储方法。分享给大家供大家参考,具体如下:

 

 
  1. /* 
  2. 实现的功能: 
  3. 用数据库存储文本数据,并且读取出来放在当前项目里 
  4. 分析: 
  5. 难度不是很大,关键是掌握文件流,数据库的操作不是很多,但是文件流的读写比较多 
  6. 日期:20131003 
  7. 作者:烟大阳仔 
  8. */ 
  9. public class Ckb_test { 
  10. public static void main(String[] args) throws SQLException, IOException { 
  11. // TODO Auto-generated method stub 
  12. read(); 
  13. static void create() throws SQLException, IOException 
  14. Connection conn=null
  15. PreparedStatement prest=null
  16. ResultSet resultset=null
  17. try { 
  18. //2.建立连接 
  19. conn=JdbcUtils.getConnection(); 
  20. //单例设计模式 
  21. conn=JdbcUtilsSingle.getInstance().getConnection(); 
  22. //3.创建语句 
  23. String sql="insert into ckb_test(text) values(?)"
  24. prest=conn.prepareStatement(sql); 
  25. File file=new File("src/cn/com/JDBC/JdbcUtils.java"); 
  26. Reader reader=new BufferedReader(new FileReader(file)); 
  27. prest.setCharacterStream(1, reader, (int)file.length()); 
  28. //4.执行语句 
  29. int i=prest.executeUpdate(); 
  30. reader.close(); 
  31. System.out.println("i="+i); 
  32. finally 
  33. JdbcUtils.free(resultset, prest, conn); 
  34. static void read() throws SQLException, IOException 
  35. Connection conn=null
  36. Statement st=null
  37. ResultSet resultset=null
  38. try { 
  39. //2.建立连接 
  40. conn=JdbcUtils.getConnection(); 
  41. //单例设计模式 
  42. conn=JdbcUtilsSingle.getInstance().getConnection(); 
  43. //3.创建语句 
  44. st=conn.createStatement(); 
  45. //4.执行语句 
  46. resultset=st.executeQuery("select text from ckb_test"); 
  47. //5.处理结果 
  48. while(resultset.next()) 
  49. Clob clob=resultset.getClob(1); 
  50. Reader reader=clob.getCharacterStream(); 
  51. //reader=resultset.getCharacterStream(1); 
  52. File file=new File("JdbcUtils.java"); 
  53. Writer writer=new BufferedWriter(new FileWriter(file)); 
  54. char[] buff=new char[1024]; 
  55. for(int i=0;(i=reader.read(buff))>0;) 
  56. writer.write(buff,0,i); 
  57. writer.close(); 
  58. reader.close(); 
  59. finally 
  60. JdbcUtils.free(resultset, st, conn); 
  61. /* 
  62. 实现的功能: 
  63. 用数据库存储图片数据,并且读取出来放在当前项目里 
  64. 分析: 
  65. 难度不是很大,关键是掌握字节流,数据库的操作不是很多,但是文件流的读写比较多,注意更改图片的目录 
  66. 日期:20131003 
  67. 作者:烟大阳仔 
  68. */ 
  69. public class PictureBlob { 
  70. public static void main(String[] args) throws SQLException, IOException { 
  71. read(); 
  72. static void create() throws SQLException, IOException 
  73. Connection conn=null
  74. PreparedStatement prest=null
  75. ResultSet resultset=null
  76. try { 
  77. //2.建立连接 
  78. conn=JdbcUtils.getConnection(); 
  79. //单例设计模式 
  80. conn=JdbcUtilsSingle.getInstance().getConnection(); 
  81. //3.创建语句 
  82. String sql="insert into blob_test(big_bit) values(?)"
  83. prest=conn.prepareStatement(sql); 
  84. File file=new File("C://Documents and Settings//Administrator//My Documents//My Pictures//cxg.jpg"); 
  85. InputStream in=new BufferedInputStream(new FileInputStream(file)); 
  86. prest.setBinaryStream(1, in, (int)file.length()); 
  87. //4.执行语句 
  88. int i=prest.executeUpdate(); 
  89. in.close(); 
  90. System.out.println("i="+i); 
  91. finally 
  92. JdbcUtils.free(resultset, prest, conn); 
  93. static void read() throws SQLException, IOException 
  94. Connection conn=null
  95. Statement st=null
  96. ResultSet resultset=null
  97. try { 
  98. //2.建立连接 
  99. conn=JdbcUtils.getConnection(); 
  100. //单例设计模式 
  101. conn=JdbcUtilsSingle.getInstance().getConnection(); 
  102. //3.创建语句 
  103. st=conn.createStatement(); 
  104. //4.执行语句 
  105. resultset=st.executeQuery("select big_bit from blob_test"); 
  106. //5.处理结果 
  107. while(resultset.next()) 
  108. Blob blob=resultset.getBlob(1); 
  109. InputStream in=blob.getBinaryStream(); 
  110. //reader=resultset.getCharacterStream(1); 
  111. File file=new File("1.jpeg"); 
  112. OutputStream out=new BufferedOutputStream(new FileOutputStream(file)); 
  113. byte[] buff=new byte[1024]; 
  114. for(int i=0;(i=in.read(buff))>0;) 
  115. out.write(buff,0,i); 
  116. out.close(); 
  117. in.close(); 
  118. finally 
  119. JdbcUtils.free(resultset, st, conn); 

希望本文所述对大家Java程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表