Java实现MySQL图片存取操作
转载自:http://blog.csdn.net/thc1987/article/details/3972201
存入操作
- /*
- ---------------表结构------------
- 表名:student2
- +--------+-------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +--------+-------------+------+-----+---------+-------+
- | id | int(4) | NO | PRI | NULL | |
- | name | varchar(20) | YES | | NULL | |
- | stupic | blob | YES | | NULL | |
- +--------+-------------+------+-----+---------+-------+
- */
- package com.ibm.jdbc;
- import java.io.*;
- import java.sql.*;
- public class StoreBLOB {
- public static void main(String[] args) {
- //连接MySQl数据库
- Connection con=DBManager.getConnection();
- PreparedStatement ps=null;
- InputStream in=null;
- try {
- //从本地硬盘读取一张读片
- in=new FileInputStream("d:/111.jpg");
- ps=con.prepareStatement("insert into student2 values(?,?,?)");
- ps.setInt(1,2);
- ps.setString(2, "Tom");
- ps.setBinaryStream(3, in, in.available());
- ps.executeUpdate();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- finally
- {
- try {
- //关闭流
- if(in!=null) in.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- //关闭相关连接
- DBManager.close(ps, con);
- }
- }
- }
取出操作
- package com.ibm.jdbc;
- import java.sql.*;
- import java.io.*;
- public class GetBLOB {
- public static void main(String[] args) {
- Connection con=DBManager.getConnection();
- Statement st=null;
- ResultSet rs=null;
- InputStream in=null;
- OutputStream out=null;
- try {
- st=con.createStatement();
- rs=st.executeQuery("select stupic from student2 where id=2");
- rs.next(); //将光标指向第一行
- //从rs中读取stupic放进InputStream对象中
- in=rs.getBinaryStream("stupic");
- //申明byte数组,用来存放图片流
- byte[] b=new byte[40000];
- in.read(b); //从InputStream对象中读取数据放进byte数组中
- //实例化OutputStream对象,在D盘创建一个图片文件
- out=new FileOutputStream("d:/222.jpg");
- //将文件输出,内容则为byte数组里面的数据
- out.write(b);
- out.flush();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- finally
- {
- try {
- if(in!=null)
- in.close();
- if(out!=null)
- out.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- DBManager.close(rs, st, con);//关闭相关连接
- }
- }
- }
Java实现MySQL图片存取操作的更多相关文章
- Java实现对Mysql的图片存取操作
1.MySQL中的BLOB类型 Mysql中可以存储大文件数据,一般使用的BLOB对象.如图片,视频等等. BLOB是一个二进制大对象,可以容纳可变数量的数据.因为是二进制对象,所以与编码方式无关.有 ...
- Java连接MySQL数据库及操作
Java操作MySQL数据库,需要驱动mysql-connector-java 来进行操作,去下载对应的jar包 一.导入需要的jar包 我用的是maven对包进行管理,在maven中添加如下内容 ...
- JAVA对MySQL数据库的操作
一.导包: 使用JDBC连接MySQL数据库时,首先需要导入一个第三方的JAR包(点击下载),下载解压得到一个JAR包,并导入到JAVA项目中,如下图: 二.DBHelper类: 代码如下: impo ...
- 在Jena框架下基于MySQL数据库实现本体的存取操作
在Jena框架下基于MySQL数据库实现本体的存取操作 转自:http://blog.csdn.net/jtz_mpp/article/details/6224311 最近在做一个基于本体的管理系统. ...
- sqlite3的图片的(二进制数据)存取操作
sqlite3的图片的(二进制数据)存取操作 前言 上篇介绍了sqlite3的一些常用插入操作方法和注意事项,在实际项目中遇到了图片缓存的问题,由于服务器不是很稳定,且受到外界环境的干扰(例如断电 ...
- Java连接MySQL数据库及简单操作代码
1.Java连接MySQL数据库 Java连接MySql需要下载JDBC驱动MySQL-connector-java-5.0.5.zip(举例,现有新版本).然后将其解压缩到任一目录.我是解压到D盘, ...
- Java数据库连接--JDBC基础知识(操作数据库:增删改查)
一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...
- 让Java和MySQL连接起来
Java 连接 MySQL 需要驱动包,可以下载菜鸟教程提供的 jar 包:http://static.runoob.com/download/mysql-connector-java-5.1.39- ...
- java 连接 MySQL
java 连接 MySQL 1.准备工作 需要下载的工具: MySQL:http://www.mysql.com/downloads/ MySQL的可视化工具SQLyog:https://www.we ...
随机推荐
- js表单提交回调函数
在研究表单的时候发现一个有意思的东西——在表单提交的时候如何保证数据全部提交完毕才会清空? 我们常用的<input type="reset" value="重置&q ...
- MC资源整理
MC模拟简介 蒙特卡罗模拟,因摩纳哥著名的赌场而得名.它能够帮助人们从数学上表述物理.化学.工程.经济学以及环境动力学中一些非常复杂的相互作用. 蒙特卡罗(Monte Carlo)方法,又称随机抽样或 ...
- 【BZOJ 1095】 1095: [ZJOI2007]Hide 捉迷藏 (括号序列+线段树)
1095: [ZJOI2007]Hide 捉迷藏 Description 捉迷藏 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子.某天,Jiajia.Wind和孩子们决定在家里玩捉迷藏游戏 ...
- 对有些反编译不成功的apk,请更新最新的apktool.jar、 dex2jar试试
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 对有些反编译不成功的apk,请更新最新的apktool.jar. dex2jar试试 a ...
- BZOJ2462[Beijing2011]矩阵模板(二维Hash)
二维矩阵匹配问题,至今不知道Q的范围是多少,反正是要求做到读入复杂度. 二维Hash:就是一维的等效拓展,注意两维的Base不能相同. 其余就是一维Hash和二维前缀和的结合,可以自然溢出,据说概率很 ...
- 【构造】Ural Championship April 30, 2017 Problem K. King’s island
题意:让你构造一个n个点的简单多边形,使得所有点是整点,并且所有边长是整数,并且没有边平行于坐标轴. 就利用勾股数,如下图这样构造即可,n为偶数时,只需矩形拼成,n为奇数时,封上虚线边即可. #inc ...
- 【深度优先搜索】mr353-取奶
应该是USACO的题目,暂时没有找到对应出处. [题目大意] 农夫约翰要量取 Q(1 <= Q <= 20,000)夸脱(夸脱,quarts,容积单位——译者注) 他的最好的牛奶,并把它装 ...
- Problem D: 统计元音字母数
#include<stdio.h> int main() { ]; int n,j,k,a,e,i,o,u; a=e=i=o=u=; gets(c); ;c[k]!='\0';k++) { ...
- CentOS通过日志反查入侵(转)
1.查看日志文件 Linux查看/var/log/wtmp文件查看可疑IP登陆 last -f /var/log/wtmp 该日志文件永久记录每个用户登录.注销及系统的启动.停机的事件.因此随着系统 ...
- python 数据分析 Matplotlib常用图表
Matplotlib绘图一般用于数据可视化 常用的图表有: 折线图 散点图/气泡图 条形图/柱状图 饼图 直方图 箱线图 热力图 需要学习的不只是如何绘图,更要知道什么样的数据用什么图表展示效果最好 ...