JSP如何读取MySql中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();
}
finally {
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();
}
}
}
JSP如何读取MySql中MEDIUMBLOB字符串相关推荐
- c 读取mysql中mediumblob_「mediumblob」JSP如何读取MySql中MEDIUMBLOB字符串 - seo实验室
mediumblob JSP如何读取mysql中mediumBLOB字符串,并显示? 实现向MYSQL数据库中存储或提取图片文件 一些情况下,需要向数据库中存储一些2进制文件,比如图片文件等,这时候, ...
- mysql mediumblob读取_JSP如何读取MySql中MEDIUMBLOB字符串 | 学步园
JSP如何读取MySql中MEDIUMBLOB字符串,并显示? 实现向MYSQL数据库中存储或提取图片文件 一些情况下,需要向数据库中存储一些2进制文件,比如图片文件等,这时候,向数据库存储数据不同于 ...
- mysql mediumblob读取_JSP如何读取MySql中MEDIUMBLOB字符串,并显示
匿名用户 1级 2006-03-18 回答 实现向MYSQL数据库中存储或提取图片文件 一些情况下,需要向数据库中存储一些2进制文件,比如图片文件等,这时候,向数据库存储数据不同于普通的字符串存储,我 ...
- Spark读取MySQL中的数据为DataFrame
Spark读取JDBC中的数据(以MySQL为例)为DataFrame,有两种方式. //聚合的时候默认分区是200,可以在此设置 val spark = SparkSession.builder() ...
- mysql查找内容某字符串出现的次数_查找MySQL中特定字符串出现的次数?
使用LENGTH()此.让我们首先创建一个表-mysql> create table DemoTable -> ( -> Value text -> ); 使用插入命令在表中插 ...
- Oracle和Mysql中的字符串的拼接
SQL允许两个或者多个字段之间进行计算,字符串类型的字段也不例外.比如我们需要 以"工号+姓名"的方式在报表中显示一个员工的信息,那么就需要把工号和姓名两个字符 串类型的字段拼接计 ...
- mysql中生成字符串对应的英文字母(拼音首字母)
mysql中生成字符串对应的英文字母(拼音首字母)的存储过程,触发器和函数 1.规则 1.1.输入字符串长度255(可变),输出字符串10(可变) 1.2.对于全英文字母或数字,输出空格后的首字符,均 ...
- mysql explode_sql-等效于explode()以在MySQL中使用字符串
sql-等效于explode()以在MySQL中使用字符串 在MySQL中,当另一个值= opponent2.score时,我希望能够搜索'31 - 7'.在MySQL中用于拆分字符串的语法是什么? ...
- java mysql 中文乱码_java读取MySQL中的中文数据显示乱码
在linux平台(Ubuntu 10.10)上安装MySQL(5.1)和JDK(1.6),然后使用PuTTY远程操作.只将PuTTY的Window -> Translation 中的" ...
最新文章
- PHP面向对象编程简单实例
- 李飞飞团队给机器人造了一个“模拟厨房”:洗切炒菜一条龙训练!人类还能VR监管 | 开源...
- Inversion of Control Containers and the Dependency Injection pattern--Martin Fowler
- 【机器视觉】 dev_set_tool_geometry算子
- linux salt生成,51CTO博客-专业IT技术博客创作平台-技术成就梦想
- 算法-排序-选择排序
- 我的LAMP实现过程——apache+php
- C#强力粉碎文件代码分享,升级中用到
- 实参与形参不兼容怎么解决_上岗证报名照片无法上传非官方解决方案
- 常见的几种 RuntimeException
- 前台MM手一抖,网络说抖它就抖!
- Qt之QToolBox
- Linux命令之nl
- linux __setup
- 算法设计与分析复习——第四章:贪心算法
- android时间为什么没有更新了,万年历插件_中华万年历小插件为什么不自己更新日期时间...
- 洛谷试炼场---提高历练地2
- 实战:第十五章:摸爬滚打这些年的心路历程
- “窗体”工具栏控件和“控件工具箱”控件基础
- 支付宝|微信|h5|个人收款免签约支付系统源码
热门文章
- Hdu 1851 Nim+巴什博弈
- 中基鸿业30岁女性的理财之道
- erlang-21.3.8.6-1.el7.x86_64.rpm依赖检测失败
- 介绍一个制作情侣网站的方法,无需服务器、域名,基于saas和动态地址
- VMware Workstation Mac 12 MOBILEME_CREATE_UNAVAILABLE_MAC 问题
- 应用层 HTTP 代理服务器转发消息时的相关头部 请求头 X-Forwarded-For
- 计算机无法识别机qie硬盘,[转载]《图解教你装配电脑》第四章:硬盘、光驱、软驱如何安装...
- 证件照片怎么改底色?证件照背景颜色怎么替换?
- android 铃声管理器,android RingtoneManager 铃声管理器
- 【linux python 进程】一招教你杀死所有的python进程