将一张图片存储在mysql中,并读取出来(BLOB数据:插入BLOB类型的数据必须使用PreparedStatement,因为插入BLOB类型的数据无法使用字符串拼写):

------------------------------------------------------------------------------------------------------------------

package com.lanqiao.javatest;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

import javax.xml.crypto.Data;

import org.junit.Test;

import com.mysql.jdbc.ResultSetMetaData;

/*大数据,大对象,用来存储超长文本的数据,例如图片等;
* BLOB数据:插入BLOB类型的数据必须使用PreparedStatement,
* 因为插入BLOB类型的数据无法使用字符串拼写
* 调用方法:
* InputStream inputStream=new FileInputStream("Kn=sW70mL7A.jpg");
* preparedstatement.setBlob(4, inputStream);
* */
public class Test12 {
static Test1 t=new Test1();

//语句插入
@Test
public void testInsertBlob() throws Exception{
Connection connection=null;
PreparedStatement preparedstatement=null;
try {//往数据库张插入数据
connection=t.getConnection();
String sql="insert into customer (name,email,birth,picture) values(?,?,?,?)";
preparedstatement=connection.prepareStatement(sql);
preparedstatement.setString(1, "liquafd");
preparedstatement.setString(2, "fsdfdf");
preparedstatement.setDate(3, new Date(new java.util.Date().getTime()));

//向数据库中插入一张图片
//数据库中图片的类型是mediumblob,图片存储在程序的bin里面
InputStream inputStream=new FileInputStream("Kn=sW70mL7A.jpg");
preparedstatement.setBlob(4, inputStream);

//获取实时时间的方法Date date=new Date(new java.util.Date().getTame);

preparedstatement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {
if(preparedstatement!=null){
preparedstatement.close();
}
if(connection!=null){
connection.close();
}
}
}
//测试数据库是否连接成功
public void testBlob() throws Exception{
System.out.println(t.getConnection());
}
//查询插入的数据
public void getT() throws Exception{

Connection connection=null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;

try {
//获取connection连接
connection=t.getConnection();
//获取
String sql="select id,name,email,birth,picture from customer where id=36";
preparedStatement=connection.prepareStatement(sql);
resultSet=preparedStatement.executeQuery();

if(resultSet.next()){
int id=resultSet.getInt(1);
String name=resultSet.getString(2);
String email=resultSet.getString(3);

Data birth=(Data) resultSet.getDate(4);
// preparedstatement.setDate(4, new Date(new java.util.Date().getTime())
//插入时使用

Blob picture=resultSet.getBlob(5);
InputStream in=picture.getBinaryStream();
OutputStream out=new FileOutputStream("Kn=sW70mL7A.jpg");

byte [] b=new byte[1024];
int len;
while((len=in.read(b))!=-1){
out.write(b, 0, len);
}
out.close();
in.close();
}

} catch (Exception e) {
e.printStackTrace();
}finally {
if (resultSet!=null) {
resultSet.close();
}
if (preparedStatement!=null) {
preparedStatement.close();
}
if (connection!=null) {
connection.close();
}
}
}

}

转载于:https://www.cnblogs.com/lxnlxn/p/5773305.html

BLOB:大数据,大对象,在数据库中用来存储超长文本的数据,例如图片等相关推荐

  1. 利用python编写爬虫程序,从招聘网站上爬取数据,将数据存入到MongoDB数据库中,将存入的数据作一定的数据清洗后做数据分析,最后将分析的结果做数据可视化

    教程演示 创建爬虫项目 编写需要爬取的字段(items.py) 编写spider文件(wuyou.py) 编写数据库连接(pipelines.py) 编写反爬措施(settings.py) Mongo ...

  2. 从“交易核心”到“数据核心”,国产数据库要换道超车丨数据猿专访

    ‍ ‍数据智能产业创新服务媒体 --聚焦数智 · 改变商业 一直以来,数据库都被国外科技企业垄断,并与芯片.操作系统合称为我国科技产业的三大"心病".接下来几十年,都将是中国产业升 ...

  3. 连接数据孤岛,巨杉数据库与 Tapdata 联合共建开放数据生态

    近日,专注实时数据服务平台的Tapdata ,宣布开源其数据源开发框架--PDK(Plugin Development Kit),并同步启动PDK插件生态共建计划,旨在充分激发实时数据流动的价值,助力 ...

  4. kibana数据导入导出_MySQL数据库批量导出和导入查询数据

    MySQL数据库批量导出和导入查询数据的过程是使用-e参数去执行命令. 由于工作需要,我需要先在一个MySQL库中查询出结果,然后以查出结果为参数,去放入另外一个MySQL数据库中当成where的条件 ...

  5. 袋鼠云数据湖平台「DataLake」,存储全量数据,打造数字底座

    一.什么是数据湖? 在探讨数据湖技术或如何构建数据湖之前,我们需要先明确,什么是数据湖? 数据湖的起源,应该追溯到2010年10月.基于对半结构化.非结构化存储的需求,同时为了推广自家的Pentaho ...

  6. python numpy读取数据_numpy中以文本的方式存储以及读取数据方法

    这篇文章主要介绍了关于numpy中以文本的方式存储以及读取数据方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 Numpy中除了能够把数据以二进制文件的方式保存到文件中以外,还可以选 ...

  7. sql数据迁移到oracle数据库,从Oracle到SQL Server数据库主键的迁移

    由于项目需要要将以前Oracle的数据库转化为SQL Server,今天利用SQL Server的DTD进行数据库的迁移,但导入以后发现只导入了表结构和数据,而表的一些主键约束都没导过来,感觉很郁闷, ...

  8. c# 向mysql插入数据_C#连接mysql数据库 及向表中插入数据的方法

    mysql 语句操作: 创建数据库:create database hotelATMDb; use hotelATMDb; C#连接mysql 1.引用 dll MySql.Data.dll 下载地址 ...

  9. 计算机术语blob是什么东西?( binary large object,二进制大对象,是一个可以存储二进制文件的容器)(典型的BLOB是一张图片或一个声音文件)

    看hikflow_demo源码,搞不清楚blob是什么玩意,, 查了一下: BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器. 在计算机中,BLOB常 ...

  10. 基于Python的海量豆瓣电影、数据获取、数据预处理、数据分析、可视化、大屏设计项目(含数据库)

    目录 项目介绍 研究背景 国内外研究现状分析 研究目的 研究意义 研究总体设计 网络爬虫介绍 豆瓣电影数据的采集 数据预处理 大数据分析及可视化 豆瓣影评结构化分析 大屏可视化 文本可视化 总结 每文 ...

最新文章

  1. Android N新特性
  2. 2、Power Query-动态汇总单元格区域数据
  3. python计算最大回撤_Python进阶量化交易场外篇3——最大回撤评价策略风险
  4. 网络安全应急演练方案内容_开展应急演练,筑牢网络安全
  5. 使用Exchange 的SMTP连接器路由/中继邮件的设定图例
  6. Java手写Hashmap(HashMap的基本用法)
  7. 初学者是学习 C 语言还是 C++ 好?各有何利弊?
  8. php自增删除开始,PHP的自增自减操作
  9. Lifecycle使用与分析-基础
  10. php7 验证url格式,url的组成格式为
  11. 新型APT组织正在攻击全球的政府实体
  12. python dynamic array
  13. Foobar2000是一款完全可定制的音乐播放器
  14. 企业微信 PC端多开
  15. Scala-Day13
  16. Flask蓝本与子域名
  17. 2021年WordPress博客装修美化(一)
  18. 入门vue+springboot项目
  19. 十大众筹PC:硅谷新生代如何打造下一代计算机
  20. centos单机部署greenplum

热门文章

  1. python开根号函数图像_使用matplotlib / python的平方根刻度
  2. gif分解工具_Python之GIF图倒放,沙雕快乐源泉!我已经笑了一天了!
  3. 计算机入门建模观后感,实习生revit学习心得-初学Revit有感
  4. android 重新点击图标显示不出来了,android开发怎么弄成,点击图标后弹出一个消息框。主界面不显示...
  5. mysql一对一关系_sql-MySQL-一对一关系?
  6. Nginx - 限制并发、限制访问速率、限制流量
  7. vue无法监听对象的属性的增加和删除
  8. php 配置文件类,PHP配置文件类
  9. oracle 启动_oracle实验--通过gdb工具研究数据库启动过程
  10. 【渝粤教育】国家开放大学2018年春季 7138-21T人际交流与沟通 参考试题