MySQL操作blob的实际操作经验汇总

此文章主要向大家讲述的是MySQL操作blob 的实际操作经验,我们大家都知道jsp(SUN企业级应用的***)+MySQL(和PHP搭配之***组合) 记住,一定要用MySQL(和PHP搭配之***组合)的longblob类型来存默认的blob大小不够。

创新互联公司专注于企业成都营销网站建设、网站重做改版、镇江网站定制设计、自适应品牌网站建设、html5商城网站制作、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为镇江等各大城市提供网站开发制作服务。

数据库字段:id (char) pic (longblob)

转载请注明出处,这时我与我的知己的合作的结过

原来MySQL操作blob字段时都要先差个空值,在查blob,好麻烦,用prepareStatment就不用那么麻烦了,哈哈

postblob.heml页面

 
 
 
  1. 无标题文档
  2. id 
  3. file
  4. testblob.jsp(SUN企业级应用的***)
  5. <%@ page contentType="text/html;charset=gb2312"%> 
  6. <%@ page import="java.sql.*" %>
  7. <%@ page import="java.util.*"%>
  8. <%@ page import="java.text.*"%>
  9. <%@ page import="java.io.*"%> 
  10. 无标题文档
  11. <% 
  12. String id=request.getParameter("id");
  13. String file=request.getParameter("file");
  14. out.print(id);
  15. out.print(file);
  16. FileInputStream str=new FileInputStream(file);
  17. out.print(str.available());
  18. java.sql.Connection conn; 
  19. java.lang.String strConn; 
  20. Class.forName("org.gjt.mm.MySQL(和PHP搭配之***组合).Driver").newInstance(); 
  21. conn= java.sql.DriverManager.getConnection("jdbc:MySQL(和PHP搭配之***组合)://localhost/test","root",""); 
  22. String sql="insert into test(id,pic) values(?,?)"; 
  23. PreparedStatement pstmt=conn.prepareStatement(sql); 
  24. pstmt.setString(1,id);
  25. pstmt.setBinaryStream(2,str,str.available()); 
  26. pstmt.execute(); 
  27. out.println("Success,You Have Insert an Image Successfully");
  28. pstmt.close();
  29. %> 
  30. 查看图片
  31. 返回
  32. readblob.jsp(SUN企业级应用的***)
  33. <%@ page contentType="text/html;charset=gb2312"%> 
  34. <%@ page import="java.sql.*, javax.sql.*" %>
  35. <%@ page import="java.util.*"%>
  36. <%@ page import="java.text.*"%>
  37. <%@ page import="java.io.*"%> 
  38. 无标题文档
  39. <%
  40. java.sql.Connection conn;
  41. ResultSet rs=null;
  42. Class.forName("org.gjt.mm.MySQL(和PHP搭配之***组合).Driver").newInstance(); 
  43. conn= java.sql.DriverManager.getConnection("jdbc:MySQL(和PHP搭配之***组合)://localhost/test","root",""); 
  44. Statement stmt=conn.createStatement(); 
  45. rs=stmt.executeQuery("select * from test where id='1'");
  46. if(rs.next())
  47. {
  48. Blob b = rs.getBlob("pic");
  49. int size =(int)b.length();
  50. out.print(size);
  51. InputStream in=b.getBinaryStream();
  52. byte[] by= new byte[size];
  53. response.setContentType("image/jpeg"); 
  54. ServletOutputStream sos = response.getOutputStream();
  55. int bytesRead = 0;
  56. while ((bytesRead = in.read(by)) != -1) {
  57. sos.write(by, 0, bytesRead);
  58. }
  59. in.close();
  60. sos.flush();
  61. }
  62. %>

注意:在用sos.write(by, 0, bytesRead);时,该方法把inputstream中的内容在一个新的页面中输出,

如果本页中还有别的内容要输出的话,只有把上述方法改为,bytesRead = in.read(by)) ;

再用out.print(new String(by));方法输出结果,注意在这里不能用by.toString()方法,该方法返回的是要输出内容的内存地址。MySQL(和PHP搭配之***组合)中有blob textarea类型大小了66536基本上放点小的东东就足够了,哈哈,但是现在的数码pic越来越大就只能用longblob了 大小有4g能 ,放个电影都够了哈哈

以上的相关内容就是对MySQL操作blob经验谈的介绍,望你能有所收获。

文章题目:MySQL操作blob的实际操作经验汇总
本文链接:http://www.shufengxianlan.com/qtweb/news24/104024.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联