/**
* Title: BlobPros.java
* Project: test
* Description: 把图片存入mysql中的blob字段,并取出
* Call Module: mtools数据库中的tmp表
* File: C:downloadsluozsh.jpg
* Copyright: Copyright (c) 2003-2003
* Company: uniware
* Create Date: 2002.12.5
* @Author: ChenQH
* @version 1.0 版本*
*
* Revision history
* Name Date Description
* ---- ---- -----------
* Chenqh 2003.12.5 对图片进行存取
*
* note: 要把数据库中的Blob字段设为longblob
*
*/
//package com.uniware;
import java.io.*;
import java.util.*;
import java.sql.*;
public class BlobPros
{
private static final String URL = "jdbc:mysql://10.144.123.63:3306/mtools?user=wind&password=123&useUnicode=true";
private Connection conn = null;
private PreparedStatement pstmt = null;
private ResultSet rs = null;
private File file = null;
public BlobPros()
{
}
/**
* 向数据库中插入一个新的BLOB对象(图片)
* @param infile 要输入的数据文件
* @throws java.lang.Exception
*/
public void blobInsert(String infile) throws Exception
{
FileInputStream fis = null;
try
{
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
conn = DriverManager.getConnection(URL);
file = new File(infile);
fis = new FileInputStream(file);
//InputStream fis = new FileInputStream(infile);
pstmt = conn.prepareStatement("insert into tmp(descs,pic) values(?,?)");
pstmt.setString(1,file.getName()); //把传过来的第一个参数设为文件名
//pstmt.setBinaryStream(2,fis,(int)file.length()); //这种方法原理上会丢数据,因为file.length()返回的是long型
pstmt.setBinaryStream(2,fis,fis.available()); //第二个参数为文件的内容
pstmt.executeUpdate();
}
catch(Exception ex)
{
System.out.println("[blobInsert error : ]" + ex.toString());
}
finally
{
//关闭所打开的对像//
pstmt.close();
fis.close();
conn.close();
}
}
/**
* 从数据库中读出BLOB对象
* @param outfile 输出的数据文件
* @param picID 要取的图片在数据库中的ID
* @throws java.lang.Exception
*/
public void blobRead(String outfile,int picID) throws Exception
{
FileOutputStream fos = null;
InputStream is = null;
byte[] Buffer = new byte[4096];
try
{
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
conn = DriverManager.getConnection(URL);
pstmt = conn.prepareStatement("select pic from tmp where id=?");
pstmt.setInt(1,picID); //传入要取的图片的ID
rs = pstmt.executeQuery();
rs.next();
file = new File(outfile);
if(!file.exists())
{
file.createNewFile(); //如果文件不存在,则创建
}
fos = new FileOutputStream(file);
is = rs.getBinaryStream("pic");
int size = 0;
/* while(size != -1)
{
size = is.read(Buffer); //从数据库中一段一段的读出数据
//System.out.println(size);
if(size != -1) //-1表示读到了文件末
fos.write(Buffer,0,size);
} */
while((size = is.read(Buffer)) != -1)
{
//System.out.println(size);
fos.write(Buffer,0,size);
}
}
catch(Exception e)
{
System.out.println("[OutPutFile error : ]" + e.getMessage());
}
finally
{
//关闭用到的资源
fos.close();
rs.close();
pstmt.close();
conn.close();
}
}
public static void main(String[] args)
{
try
{
BlobPros blob = new BlobPros();
//blob.blobInsert("C:Downloadsluozsh1.jpg");
blob.blobRead("c:/downloads/1.jpg",47);
}
catch(Exception e)
{
System.out.println("[Main func error: ]" + e.getMessage());
}
}
}

使用java语言操作,如何来实现MySQL中Blob字段的存取相关推荐

  1. mysql中的字段类型

    Mysql中的字段类型 MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间类型以及字符串(字符)类型.本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类 ...

  2. mybatis查询mysql blob字段_mybatis+spring+mySql 处理Blob字段(报错:data too long for column 'descrip')...

    通过Spring+Mybatis+Mysql搭建了一个框架,在向MYSQl插入图片信息时,将其保存为BLOB类型到数据库. 前台JAVA代码如下: @RequestMapping("/zdf ...

  3. mysql栏的范围外值,MySQL中各种字段的取值范围-数据库专栏,MySQL

    mysql中各种字段的取值范围过节回来,网站更新的第一篇文章. 看来我有必要在最近找到一位志同道合的同学一起来维护站点才行了----------------------tinyint -128 – 1 ...

  4. mysql中判断字段为空

    mysql中判断字段为null或者不为null 在mysql中,查询某字段为空时,切记不可用 = null, 而是 is null,不为空则是 is not null select nulcolumn ...

  5. mysql join 索引 无效_ORACLE MYSQL中join 字段类型不同索引失效的情况-阿里云开发者社区...

    ORACLE MYSQL中join 字段类型不同索引失效的情况 重庆八怪 2016-12-29 780浏览量 简介: 关于JOIN使用不同类型的字段类型,数据库可能进行隐士转换,MYSQL ORACL ...

  6. mysql 取substring_如何在MySQL中的字段上应用Substring()以获取字符串的一部分?

    您可以使用substring()MySQL中的字段来获取字符串的一部分.以下是语法-select substring(yourColumnName,yourStartingIndex,yourEndi ...

  7. MySQL中查询字段为空或者为null方法

    MySQL中查询字段为空或者为null方法 判断为null select * from table where column is null; 不为null: select * from table ...

  8. mysql中数据库字段类型详解

    mysql中数据库字段类型详解 1,blob字段 mysql中blob是一个二进制大型对象,是一个可以储存大量数据的容器,它能容纳不同大小的数据. mysql中blob的四种类型除了存储数据的大小有区 ...

  9. MySQL导出Blob字段

    mysqldump说明 mysqldump Ver 10.13 Distrib 5.5.62, for Win64 (AMD64) Copyright (c) 2000, 2018, Oracle a ...

最新文章

  1. 一系列用于Fuzzing学习的资源汇总
  2. Mybatis通用Mapper
  3. Flutter中的提示工具
  4. 亲热接触Redis-第一天
  5. 菜鸟机器学习散点总结(一)
  6. [UE4.4.x] 虚幻4 安卓打包
  7. webview的javascript与Native code交互
  8. Unity与 DLL文件 ☀️| 怎样使用 C# 类库 生成一个DLL文件 并 调用!
  9. 计算机选修论文,【计算机专业论文】论计算机专业选修课的实践(共2142字)
  10. 利用 adb 对手机进行屏幕分辨率设置
  11. 原生小说APP源码出售,可二次开发,小说阅读app源码
  12. anaconda base环境的地址_Anaconda安装及环境管理
  13. python分隔符的使用_使用python处理分隔符
  14. Cura参数设置-避免支撑拆除带来的困难
  15. 合并时显示是无效的m3u8文件_合并M3U8文件方法
  16. Android - 修改主题和颜色
  17. SpringBoot数据库密码动态配置
  18. 一种简单、安全的Dota全图新思路 作者:LC
  19. cmd无法进入其他盘符问题解决方案
  20. 百度地图动态修改图标

热门文章

  1. 【开源】开发者新闻APP+新闻Restful服务+博客园新闻采集程序+infoq新闻采集程序+36kr新闻采集程序+oschina新闻采集程序+51cto新闻采集程序+csdn新闻采集程序...
  2. Web开发基本准则-55实录-Web访问安全
  3. 古董留念 - Microsoft Office 4.2中文版
  4. 如何判断一个数为无符号数还是有符号数
  5. 量子计算机退相干问题怎么办,量子退相干
  6. 计算机专业理论模拟试题A,高职对口招生考试模拟试题计算机专业网络模拟题...
  7. 一个人形图案程序c语言,如何用PPT绘制出人形图形
  8. linux 脚本map,shell中map的用法
  9. python获取代码当前行数_Python实验室一段日志代码,获取当前调用的函数名和行号...
  10. 下列选项不属于有机物的是_初级会计实务:属于工业企业营业收入的有哪些?...