`
liudaoru
  • 浏览: 1579280 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql操作blob

    博客分类:
  • java
阅读更多

From: http://www.pcdog.com/edu/mysql/20/11/f244110.html

 

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

数据库字段: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>
    <td>file</td>
    <td><input name="file" type="file" /></td>
  </tr>
  <tr>
    <td><input  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)) ;

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

分享到:
评论

相关推荐

    QT-Mysql-Blob.zip_mysql blob_qt blob 文件_qt blob类型_qt的blob

    下面我们将详细讨论如何在MySQL和Qt环境下对BLOB数据类型进行操作。 首先,BLOB是一个用于存储大块二进制数据的数据类型,包括四种变体:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB,它们的区别主要在于能存储的最大...

    oracle中的BLOB(照片)转换到mysql中

    而MySQL同样提供了BLOB类型,用于相似的用途。本篇将详细讲解如何在Oracle与MySQL之间进行BLOB类型的转换,特别是针对照片的处理。 首先,让我们了解BLOB类型。BLOB是一种可以存储大量二进制数据的对象,分为四种子...

    从mysql数据库中批量下载Blob图片到本地

    总结起来,批量下载MySQL数据库中Blob类型的图片至本地,需要理解Blob数据类型,熟悉Java的JDBC操作,以及掌握文件I/O操作。通过以上步骤,你可以有效地完成这一任务,确保图片数据的完整性和可访问性。在实际项目中...

    jsp操作mysql数据库的blob字段

    在这个场景中,我们关注的是如何使用Java Server Pages(JSP)来操作MySQL数据库中的Blob(Binary Large Object)字段,这是一个用于存储大容量二进制数据如图片、文档或音频文件的特殊字段类型。以下是关于这个主题...

    mysql导出工具(blob字段)

    mysql导出工具,可导出无注释插入语句,表中字段有blob类数据,插入语句前还有锁表操作语句,适合多种场景

    mysql_blob_tools

    通过这个工具,用户可以对从MySQL数据库导出的`aidigame_data1.sql`这样的文件进行操作,其中可能包含Blob类型的列。 `aidigame_data1.sql`文件很可能是一个SQL脚本,包含了数据库表结构定义以及数据插入语句。Blob...

    向数据库插入blob数据实例源码--在mysql中通过

    上述代码首先连接到MySQL数据库,然后创建一个PreparedStatement对象来执行插入操作。`setBlob`方法用于设置Blob参数,这里传入一个FileInputStream对象,该对象从指定文件读取数据。 4. **查询和提取Blob数据** ...

    MySQL BLOB类型中二进制字段和批量操作输入.docx

    MySQL中的BLOB类型是用于存储...总结来说,MySQL的BLOB类型是为了解决大数据存储问题,而PreparedStatement是Java中用来安全高效地操作BLOB字段的工具。正确理解和使用这些技术,对于处理大量的二进制数据至关重要。

    mysql oracle 插入blob数据实例源码

    MySQL和Oracle都是广泛使用的数据库管理系统,它们都支持Blob类型的字段来存储这类数据。本篇文章将深入探讨如何在MySQL和Oracle数据库中插入Blob数据,并提供相关的源码实例。 一、MySQL中的Blob数据插入 MySQL...

    mysql中blob数据处理方式

    这篇文章将探讨如何在MySQL中处理Blob数据,特别是通过Java代码进行操作。 首先,为了连接到MySQL数据库,我们需要引入JDBC驱动并使用`DriverManager.getConnection()`方法。在示例代码中,`getMySQLConnection()`...

    hibernate struts处理mysql数据库blob字段实例

    本实例主要探讨如何利用Hibernate和Struts框架来处理MySQL数据库中的BLOB字段,实现文件的上传与下载功能。 **一、Hibernate框架** Hibernate是一个强大的Java持久化框架,它简化了数据库操作,提供了对象关系映射...

    VC++6.0 MFC使用ODBC链接MySQL把图片写入blob字段

    总的来说,这个项目涉及了VC++6.0 MFC、ODBC、MySQL数据库以及BLOB字段的使用,涵盖了Windows编程、数据库接口设计、文件操作和数据存储等多个方面的知识。对于想要提升数据库操作技能,特别是将图像数据存入数据库...

    PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】

    本文实例讲述了PHP操作MySQL中BLOB字段的方法。分享给大家供大家参考,具体如下: 1、MySQL中BLOB字段类型 BLOB类型的字段用于存储二进制数据。 MySQL中,BLOB是个类型系列,包括:...2、PHP操作BLOB案例 (1)操作新

    java,Blob字段操作,将图片或者文件保存到数据库中.zip

    本教程将深入探讨如何使用Java进行Blob字段的操作,以实现将图片或文件保存到数据库中。 1. **Blob字段的理解** Blob是SQL标准定义的一种数据类型,它能够存储大量的二进制数据,如图像、音频文件、PDF文档等。在...

    mysql和Oracle在对clob和blob字段的处理

    MySQL提供了`TEXT`和`BINARY`系列的数据类型来对应`CLOB`和`BLOB`。`LONGTEXT`和`LONGBLOB`是最接近`CLOB`和`BLOB`的数据类型,分别可存储最大4GB的字符和二进制数据。MySQL将这些大型数据存储在外存,以减少内存...

    判断blob字段是否为空

    在关系型数据库中,如Oracle、MySQL、SQL Server等,BLOB字段提供了一种高效的方式,用于处理和存储大数据量的非结构化信息。 ### 判断BLOB字段是否为空的必要性 在实际应用中,判断BLOB字段是否为空对于数据完整...

    Delphi 如何将二维数组数据 以Blob 存入数据库中 并读取 工程

    在本场景中,我们将探讨如何在 Delphi 中将二维数组数据转换为 Blob 数据,然后存入 MySQL 数据库,并从数据库中读取出来。 首先,我们需要了解 Delphi 中的二维数组和 Stream 对象的概念。二维数组是多个一维数组...

    使用Hibernaet存储MYSQL表中BLOB字段的问题

    总结一下,处理Hibernate与MySQL BLOB字段的关键在于理解BLOB的特性和挑战,采用适当的数据处理策略,如流式操作、内存管理、事务控制以及数据库版本兼容性考虑。在实践中不断优化,可以提高代码的稳定性和性能。

    上传图片,保存到数据库,jdbc操作blob

    上传图片到数据库并使用JDBC操作BLOB 在本篇文章中,我们将讨论如何上传图片到数据库,并使用JDBC操作BLOB(Binary Large OBject)。BLOB是一种二进制大对象,是数据库中的一种数据类型,用于存储大规模的二进制...

Global site tag (gtag.js) - Google Analytics