mediumblob

JSP如何读取mysql中mediumBLOB字符串,并显示?

实现向MYSQL数据库中存储或提取图片文件

一些情况下,需要向数据库中存储一些2进制文件,比如图片文件等,这时候,向数据库存储数据不同于普通的字符串存储,我们需要对这个2进制文件使用java处理2进制流的API进行处理,然后再进行存储。我们需要进行以下步骤来实现:

向数据库中存储文件的时候,一样使用标准SQL语句,如: insert into database (column1, column2,..)

values(v1,v2,…);注意的是,要在建立存放2进制文件的TABLE时,存放的字段要使用BLOB类型,而不是普通的VARCHAR等。

BLOB是专门存储2进制文件的类型,他还有大小之分,比如mediablob,logblob等,以存储大小不同的2进制文件,一般的图形文件使用

mediablob足以了。

1 见以下代码实现向MYSQL中储存图片文件:

…………………………

private final String insertquery = "insert into employeephoto

(Employee_ID,binary_Photo,LastMod,Created) values (?,?, NOW(), NOW())";

public void doInsertStaffPic(String loginname,String source_URL) {

Connection conn = null;

Preparedstatement pre = null;

try {

// 进行数据库连接,这里我使用的是在STRUTS中配置的连接池,当然也可// 以自己通过JDBC直接连

conn = DBProcess.getConnection();

//从图片源中获得图片对象并写到缓存中

Image image = new ImageIcon(source_URL).getImage();

BufferedImage bImage = new BufferedImage(image.getWidth(null),

image.getHeight(null), BufferedImage.TYPE_INT_RGB);

Graphics bg = bImage.getGraphics();

bg.drawImage(image, 0, 0, null);

bg.dispose();

//将图片写入2进制的输出流 并放如到byte[] buf中

ByteArrayoutputstream out = new ByteArrayOutputStream();

ImageIO.write(bImage, "jpg", out);

byte[] buf = out.toByteArray();

//获得这个输出流并将他设置到BLOB中

ByteArrayInputStream inStream = new ByteArrayInputStream(buf);

pre = conn.preparestatement(insertstaffpicquery);

pre.setString(1, loginname);

pre.setBinaryStream(2, inStream, inStream.available());

// 执行写如数据

pre.executeUpdate();

} catch (Exception exc) {

exc.printstacktrace();

}

try {

pre.close();

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

2 下代码实现从MYSQL中获取图片文件并写入本地文件系统:

…………………………

private final String writeoutquery = "insert into employeephoto

(Employee_ID,Binary_Photo,LastMod,Created) values (?,?, NOW(), NOW())";

// retrive the picture data from database and write it to the local disk

public void doGetAndShowStaffPic(String loginname, String dir) {

FileOutputStream output = null;

InputStream input = null;

Connection conn = null;

ResultSet rs = null;

PreparedStatement pre = null;

try {

conn = DBProcess.getConnection();

pre = conn.prepareStatement(writeoutquery);

pre.setString(1, loginname);

rs = pre.executequery();

if (rs.next()) {

// 从数据库获得2进制文件数据

Blob image = rs.getBlob("Binary_Photo");

// setup the streams

Input = image.getBinaryStream();

try {

// 设置写出路径。

output = new FileOutputStream(dir);

} catch (filenotfoundException e1) {

e1.printStackTrace();

}

// set read buffer size 注意不要设置的太小,要是太小,图片可能不完整

byte[] rb = new byte[1024000];

int ch = 0;

// process blob

try {

// 写入本地文件系统

while ((ch = input.read(rb)) != -1) {

output.write(rb, 0, ch);

}

} catch (IOException e) {

e.printStackTrace();

}

try {

input.close();

} catch (IOException e) {

e.printStackTrace();

}

try {

output.close();

} catch (IOException e) {

e.printStackTrace();

}

}

} catch (SQLException e) {

e.printStackTrace();

}

finally {

try {

rs.close();

pre.close();

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

相关阅读

CTB8.0 共有如下类型文件:

Newswire: [0001-0325, 0400-0454, 0500-0540, 0600-0885, 0900-0931, 4000-4050]——后缀.nw.raw

主要逻辑函数就是max92xx_i2c_read/write

/*!

* @file max92xx.c

*

* @brief max92xx GMSL1 DSI Serializer/DESerializer dr

解决方法(Code)在文章最后面,耐心看完

今天在项目中遇到一个问题,有一个需求是需要验证下载的ZIP文件,解压读取ZIP文件夹内部的文件,文

ResourceBundle与Properties的区别在于ResourceBundle通常是用于国际化的属性配置文件读取,Properties则是一般的属性配置文件读取

最常见的原因:可能是USB接口不良等原因;如果硬盘 接口这些都没有问题,而且插上之后,明显感觉移动硬盘有反应。那应该就是系统硬盘驱动

c 读取mysql中mediumblob_「mediumblob」JSP如何读取MySql中MEDIUMBLOB字符串 - seo实验室相关推荐

  1. rfa 文件读取_「rfa」rfa文件用什么软件打开? - seo实验室

    rfa 后缀名.rfa的用什么软件可以打开?什么是文件扩展名为RFA?有没有人给您发送过RFA文件,而您却不知道该如何打开?可能您在电脑上发现了一个 RFA文件却不知道这是做什么用的?windows ...

  2. char 类型与lpcwstr_「lpctstr」char* 与 LPCTSTR 类型的互相转换 - seo实验室

    lpctstr 1.char* 转换成 LPCTSTR char ch[1024] = "wo shi ni baba"; int num = MultiByteToWideCha ...

  3. linux mysql软件_「Linux」 - 常用软件安装-MySql

    一.TIPS 1.5.6版本使用mysql_install_db安装:5.7版本中被废弃,使用--initialize,进行初始化安装 2.初始化时,使用--initialize-insecure生成 ...

  4. python中的猜数字实验代码_「gals」python实现推理猜数字游戏Begals - seo实验室

    gals Begals是可以和朋友一起玩的一个推理游戏.你的朋友想到一个随机的.没有重复的3位数字,你尝试去猜测它是什么. 每次猜测之后,朋友就会给出3种类型的线索: Bagels:你猜测的3个数都不 ...

  5. smalldatetime mysql_「smalldatetime」datetime与smalldatetime之间的区别小结 - seo实验室

    smalldatetime 1.时间范围的差别: smalldatetime的有效时间范围1900/1/1~2079/6/6 datetime的有效时间范围1753/1/1~9999/12/31 所以 ...

  6. awr报告 解读_「awr」AWR报告关于DB Time的解读 - seo实验室

    awr oracle DB Time是从时间角度剖析数据库性能的指标.将性能问题定位在耗费时间最多的事件或sql语句上.优化的目的便是:减少用户花在数据库上的时间,或减少DB Time. 1. ora ...

  7. jsonobject json对象里面_「jsonobject」用JSONObject解析和处理json数据 - seo实验室

    jsonobject 本文中主要介绍jsonobject处理json数据时候的一些常用场景和方法. (一)jar包下载 所需jar包打包下载百度网盘地址:https://pan.baidu.com/s ...

  8. java mouseevent_「mouse_event」Java MouseEvent类(鼠标事件) - seo实验室

    mouse_event 简介 所有组件都能发出鼠标事件,MouseEvent类负责捕获鼠标事件,可以通过为组件添加实现了MouseListener接口的监听器类来处理相应的鼠标事件. MouseLis ...

  9. mysql永远不用utf8_永远不要在 MySQL 中使用「utf8」

    题图:by apple from Instagram 本文出自极客邦「聊聊架构」公众号的编译.我自己当年也被这个问题坑过,当时并没有如此详细的分析文章.我觉得有责任再次分享一下,让更多人知道这个事情. ...

最新文章

  1. python判断密码是否正确_第一个python程序-判断登陆用户名和密码是否正确
  2. 欠拟合和过拟合学习笔记
  3. iOS ALAsset的选取和存储
  4. java 对象初始化属性,JAVA中类属性的初始化
  5. 熟读《阿里巴巴java开发手册》(一、编程规约)
  6. C指针原理(39)-GLIB
  7. 阿里云ESC上的Ubuntu图形界面的安装
  8. Proteus常见电平状态
  9. Android官方开发文档Training系列课程中文版:连接无线设备之通过WIFI创建P2P连接
  10. 楼对面的男士夏天就光膀子,请问大家,男士真的都爱光膀子吗?
  11. implicit关键字和explicit关键字
  12. ubuntu14.04中mysql的安裝及utf8编码集配置
  13. CSS3属性选择器总结
  14. C++ 算法 元素最大值和最小值
  15. 编程猫python讲师面试_【编程猫教师面试】笔试:试题+打字测速-看准网
  16. 实例——Python爬虫requests网络图片的爬取和存储
  17. 突击蓝桥杯嵌入式(一)——内容概览
  18. 常用的excel公式备忘
  19. vue-element-admin 花裤衩 模板 ,中文版,运行报错解决方案
  20. IT外企那点儿事(20): 程序员的大侠情结

热门文章

  1. Python生成观后感,小学生的作业有救了?
  2. 次坐标从0开始_什么是齐次坐标?
  3. Spring初识(四)——AOP1
  4. 【iOS】拍照/相册单选、相册多选、图片浏览、图片裁剪
  5. java计算机毕业设计留守儿童帮扶网站源码+mysql数据库+系统+lw文档+部署
  6. 计算机毕业设计ssm儿童福利院管理系统5d7wb系统+程序+源码+lw+远程部署
  7. 极光厂商通道接入配置
  8. Android 8.0 极光推送通知栏显示 ’xxx正在运行‘
  9. “0x69ba3a96〞指令引用的〝0x00000000〞内存。该内存不能为〝written〞
  10. 0003有意思的小题目