c 读取mysql中mediumblob_「mediumblob」JSP如何读取MySql中MEDIUMBLOB字符串 - seo实验室
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实验室相关推荐
- rfa 文件读取_「rfa」rfa文件用什么软件打开? - seo实验室
rfa 后缀名.rfa的用什么软件可以打开?什么是文件扩展名为RFA?有没有人给您发送过RFA文件,而您却不知道该如何打开?可能您在电脑上发现了一个 RFA文件却不知道这是做什么用的?windows ...
- char 类型与lpcwstr_「lpctstr」char* 与 LPCTSTR 类型的互相转换 - seo实验室
lpctstr 1.char* 转换成 LPCTSTR char ch[1024] = "wo shi ni baba"; int num = MultiByteToWideCha ...
- linux mysql软件_「Linux」 - 常用软件安装-MySql
一.TIPS 1.5.6版本使用mysql_install_db安装:5.7版本中被废弃,使用--initialize,进行初始化安装 2.初始化时,使用--initialize-insecure生成 ...
- python中的猜数字实验代码_「gals」python实现推理猜数字游戏Begals - seo实验室
gals Begals是可以和朋友一起玩的一个推理游戏.你的朋友想到一个随机的.没有重复的3位数字,你尝试去猜测它是什么. 每次猜测之后,朋友就会给出3种类型的线索: Bagels:你猜测的3个数都不 ...
- smalldatetime mysql_「smalldatetime」datetime与smalldatetime之间的区别小结 - seo实验室
smalldatetime 1.时间范围的差别: smalldatetime的有效时间范围1900/1/1~2079/6/6 datetime的有效时间范围1753/1/1~9999/12/31 所以 ...
- awr报告 解读_「awr」AWR报告关于DB Time的解读 - seo实验室
awr oracle DB Time是从时间角度剖析数据库性能的指标.将性能问题定位在耗费时间最多的事件或sql语句上.优化的目的便是:减少用户花在数据库上的时间,或减少DB Time. 1. ora ...
- jsonobject json对象里面_「jsonobject」用JSONObject解析和处理json数据 - seo实验室
jsonobject 本文中主要介绍jsonobject处理json数据时候的一些常用场景和方法. (一)jar包下载 所需jar包打包下载百度网盘地址:https://pan.baidu.com/s ...
- java mouseevent_「mouse_event」Java MouseEvent类(鼠标事件) - seo实验室
mouse_event 简介 所有组件都能发出鼠标事件,MouseEvent类负责捕获鼠标事件,可以通过为组件添加实现了MouseListener接口的监听器类来处理相应的鼠标事件. MouseLis ...
- mysql永远不用utf8_永远不要在 MySQL 中使用「utf8」
题图:by apple from Instagram 本文出自极客邦「聊聊架构」公众号的编译.我自己当年也被这个问题坑过,当时并没有如此详细的分析文章.我觉得有责任再次分享一下,让更多人知道这个事情. ...
最新文章
- python判断密码是否正确_第一个python程序-判断登陆用户名和密码是否正确
- 欠拟合和过拟合学习笔记
- iOS ALAsset的选取和存储
- java 对象初始化属性,JAVA中类属性的初始化
- 熟读《阿里巴巴java开发手册》(一、编程规约)
- C指针原理(39)-GLIB
- 阿里云ESC上的Ubuntu图形界面的安装
- Proteus常见电平状态
- Android官方开发文档Training系列课程中文版:连接无线设备之通过WIFI创建P2P连接
- 楼对面的男士夏天就光膀子,请问大家,男士真的都爱光膀子吗?
- implicit关键字和explicit关键字
- ubuntu14.04中mysql的安裝及utf8编码集配置
- CSS3属性选择器总结
- C++ 算法 元素最大值和最小值
- 编程猫python讲师面试_【编程猫教师面试】笔试:试题+打字测速-看准网
- 实例——Python爬虫requests网络图片的爬取和存储
- 突击蓝桥杯嵌入式(一)——内容概览
- 常用的excel公式备忘
- vue-element-admin 花裤衩 模板 ,中文版,运行报错解决方案
- IT外企那点儿事(20): 程序员的大侠情结
热门文章
- Python生成观后感,小学生的作业有救了?
- 次坐标从0开始_什么是齐次坐标?
- Spring初识(四)——AOP1
- 【iOS】拍照/相册单选、相册多选、图片浏览、图片裁剪
- java计算机毕业设计留守儿童帮扶网站源码+mysql数据库+系统+lw文档+部署
- 计算机毕业设计ssm儿童福利院管理系统5d7wb系统+程序+源码+lw+远程部署
- 极光厂商通道接入配置
- Android 8.0 极光推送通知栏显示 ’xxx正在运行‘
- “0x69ba3a96〞指令引用的〝0x00000000〞内存。该内存不能为〝written〞
- 0003有意思的小题目