mysql操作blob经验谈

2016-02-19 19:25 14 1 收藏

下面请跟着图老师小编一起来了解下mysql操作blob经验谈,精心挑选的内容希望大家喜欢,不要忘记点个赞哦!

【 tulaoshi.com - Web开发 】

  背景!jsp+mysql 记住 要用mysql的longblob类型来存默认的blob大小不够

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

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

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

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

  postblob.heml页面

  !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  html xmlns="http://www.w3.org/1999/xhtml"
  head
  meta http-equiv="Content-Type" content="text/html; charset=gb2312" /
  title无标题文档/title
  /head
  body
  form action="testblob.jsp" method="post"
  table width="291" border="1"
    tr
      td width="107"id /td
      td width="168"input name="id" type="text" //td
    /tr
    tr
      tdfile/td
      tdinput name="file" type="file" //td
    /tr
    tr
      tdinput  type="submit"  value="提交"//td
    
    /tr
  /table
  /form
  /body
  /html
  ***************************************************************

  testblob.jsp

  %@ page contentType="text/html;charset=gb2312"% 
  %@ page import="java.sql.*" %
  %@ page import="java.util.*"%
  %@ page import="java.text.*"%
  %@ page import="java.io.*"% 
  html xmlns="http://www.w3.org/1999/xhtml"
  head
  meta http-equiv="Content-Type" content="text/html; charset=gb2312" /
  title无标题文档/title
  /head
  body
  %
   String id=request.getParameter("id");
   String file=request.getParameter("file");
   out.print(id);
   out.print(file);
   FileInputStream str=new FileInputStream(file);
   out.print(str.available());
     java.sql.Connection conn;
     java.lang.String strConn;
     Class.forName("org.gjt.mm.mysql.Driver").newInstance();
     conn= java.sql.DriverManager.getConnection("jdbc:mysql://localhost/test","root","");
   String sql="insert into test(id,pic) values(?,?)";
   PreparedStatement pstmt=conn.prepareStatement(sql);
   pstmt.setString(1,id);
   pstmt.setBinaryStream(2,str,str.available());
  pstmt.execute();
  out.println("Success,You Have Insert an Image Successfully");
   pstmt.close();
  %
  a href="readblob.jsp"查看图片/a
  a href="postblob.html"返回/a
  /body
  /html

  ********************************************************

  readblob.jsp

  %@ page contentType="text/html;charset=gb2312"% 
  %@ page import="java.sql.*, javax.sql.*" %
  %@ page import="java.util.*"%
  %@ page import="java.text.*"%
  %@ page import="java.io.*"% 
  !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  html xmlns="http://www.w3.org/1999/xhtml"
  head
  meta http-equiv="Content-Type" content="text/html; charset=gb2312" /
  title无标题文档/title
  /head

  body
  %
   
   java.sql.Connection conn;
   ResultSet rs=null;
    Class.forName("org.gjt.mm.mysql.Driver").newInstance();
     conn= java.sql.DriverManager.getConnection("jdbc:mysql://localhost/test","root","");
     Statement stmt=conn.createStatement();
     rs=stmt.executeQuery("select * from test where id='1'");
    if(rs.next())
    {
      Blob b = rs.getBlob("pic");
    
   int size =(int)b.length();
        out.print(size);
    InputStream in=b.getBinaryStream();
    byte[] by= new byte[size];
    response.setContentType("image/jpeg");
    ServletOutputStream sos = response.getOutputStream();
       int bytesRead = 0;
         while ((bytesRead = in.read(by)) != -1) {
               sos.write(by, 0, bytesRead);
            }
           in.close();
           sos.flush();
     
    }
   
   
  %
  /body
  /html
  ********************************************************************

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

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

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

来源:https://www.tulaoshi.com/n/20160219/1620957.html

延伸阅读
《元素:魔法战争》经验谈 1,hp问题。 很多人都不懂得突破5点HP。现在知道的有以下三种方法: 1,升级。小兵多打点战会升级。 2,升级军事里面的training,造兵的时候可以选择老兵,这时会有8点HP,以后还能进一步升级,进一步提高HP上限。 3,军事训练选择升级后勤学,这样造兵的时候可以选择party,多人叠加,提高HP上限。 2,卡位问题。 很...
您的周末是如何度过的呢?是不是就睡觉,睡醒了就上线呢?那您就已经加入宅女的行列了, 宅女减肥 往往天天都在喝零食作伴,所以肥胖也成为了宅女们得大题,如何可以不出门也可以维持自己的体型呢?今天小编就给您介绍 宅女减肥经验谈 。 宅女减肥经验谈 宅女减肥的方法不出闺门也能瘦 腰部扭转 功能:伸展侧腰及背部外侧肌肉...
《孤胆枪手2》通关经验谈   虽然眼累了点,但是这个游戏还是不错的!   不过,到了后期!其实还是能量武器有最终优势。打到后来,基本通关都不会死一条命。   总结经验如下! 一、前期就要着重表现人物一个属性加强!如能量武器,或者别的什么。生命等刚开始都不需要加太多的点,可以通过加强芯片得到。 二、第一次玩这个的...
标签: 电脑入门
由于技术的成熟以及生产成本的下降,硬盘的价格和它的容量成反比的一路狂降,现在一般普通用户的硬盘动辄120G或 160G,一些喜欢下载东东的玩家更是用到了三四百个Gb的硬盘了。大容量以及高转速的硬盘给用户带来更多的存储空间,同时呢,它也带来更多的不稳定性,经常会无缘无故的数据丢失进不了系统,更甚是整个硬盘GAME OVER。不少用户在抱...
《冲突世界》3日经验谈 很久没碰上这么一款让我连续3天整夜玩的游戏了。。。   总资金是6000,出兵最好专一以保证战斗力,随机应变自选混编少量该兵种其他单位或干脆换兵种,但出非本职兵种是不划算的。   步兵系:在反战车小队/防空兵手雷小队选一为主,其他为辅   装甲系:在重型坦克/中型坦克/轻型坦克选一为主,其他为...

经验教程

285

收藏

70
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部