向MySQL 中存储二进制数据文件

摘要:
“;st=conn.prepareStatement;st.setInt(1,1);rs=st.executeQuery();如果{InputStreamin=rs.getBinaryStream;intlen=0;bytebuffer[]=newbyte[1024];FileOutputStreamout=newFileOutputStream;而{out.write;}在里面close();出来close();}}捕获{e.printStackTrace();}最后{JdbcUtils.release;}}包.itcast。演示;importjava.io。文件importjava.io。文件输入流;importjava.io。文件输出流;importjava.io。输入流;importjava.sql。联系importjava.sql。编制报表;importjava.sql。结果集;importorg.junit。测验importcn.itcast.utils。JdbcUtils;PublicclassDemo2{/**createtabletestblob;*///存储二进制文件@Testpublicvoidadd(){Connectionconn=null;PreparedStatementst=null;ResultSetrs=null;try{conn=JdbcUtils.getConnection();Stringsql=“insertintotestblobvalues(?
package cn.itcast.demo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import org.junit.Test;

import cn.itcast.utils.JdbcUtils;

public class Demo2 {

    /**
     
     create table testblob
     (
         id int primary key auto_increment,
         image longblob
     );
     
     */
    
    //向 Mysql数据库中存储二进制文件
    @Test
    public void add(){
        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        
        try{
            conn = JdbcUtils.getConnection();
            String sql = "insert into testblob(image) values(?)";
            st = conn.prepareStatement(sql);
            String path = Demo2.class.getClassLoader().getResource("01.jpg").getPath();
            st.setBinaryStream(1, new FileInputStream(path), (int) new File(path).length());
            int num = st.executeUpdate();
            if(num>0){
                System.out.println("插入成功!!");
            }
        }catch (Exception e) {
            e.printStackTrace();
        }finally{
            JdbcUtils.release(conn, st, rs);
        }
    }
    
    @Test
    public void read(){
        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        
        try{
            conn = JdbcUtils.getConnection();
            String sql = "select image from testblob where id=?";
            st = conn.prepareStatement(sql);
            st.setInt(1, 1);
            rs = st.executeQuery();
            if(rs.next()){
                InputStream in = rs.getBinaryStream("image");
                int len = 0;
                byte buffer[] = new byte[1024];
                
                FileOutputStream out = new FileOutputStream("c:\1.jpg");
                while((len=in.read(buffer))>0){
                    out.write(buffer,0, len);
                }
                in.close();
                out.close();
            }
        }catch (Exception e) {
            e.printStackTrace();
        }finally{
            JdbcUtils.release(conn, st, rs);
        }
    }

}
package cn.itcast.demo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import org.junit.Test;

import cn.itcast.utils.JdbcUtils;

public class Demo2 {

    /**
     
     create table testblob
     (
         id int primary key auto_increment,
         image longblob
     );
     
     */
    
    //向 Mysql数据库中存储二进制文件
    @Test
    public void add(){
        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        
        try{
            conn = JdbcUtils.getConnection();
            String sql = "insert into testblob(image) values(?)";
            st = conn.prepareStatement(sql);
            String path = Demo2.class.getClassLoader().getResource("01.jpg").getPath();
            st.setBinaryStream(1, new FileInputStream(path), (int) new File(path).length());
            int num = st.executeUpdate();
            if(num>0){
                System.out.println("插入成功!!");
            }
        }catch (Exception e) {
            e.printStackTrace();
        }finally{
            JdbcUtils.release(conn, st, rs);
        }
    }
    
    @Test
    public void read(){
        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        
        try{
            conn = JdbcUtils.getConnection();
            String sql = "select image from testblob where id=?";
            st = conn.prepareStatement(sql);
            st.setInt(1, 1);
            rs = st.executeQuery();
            if(rs.next()){
                InputStream in = rs.getBinaryStream("image");
                int len = 0;
                byte buffer[] = new byte[1024];
                
                FileOutputStream out = new FileOutputStream("c:\1.jpg");
                while((len=in.read(buffer))>0){
                    out.write(buffer,0, len);
                }
                in.close();
                out.close();
            }
        }catch (Exception e) {
            e.printStackTrace();
        }finally{
            JdbcUtils.release(conn, st, rs);
        }
    }

}

免责声明:文章转载自《向MySQL 中存储二进制数据文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇QNX 实时操作系统(Quick Unix)Vue.set的使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MYSQL 命令行工具自动登录的方法

MYSQL 命令行工具自动登录的方法 1. 需求提出 由于在linux 环境下,经常需要使用mysql(command-line tool) 终端连接到MYSQL DB服务。 其中大致的语法如下: mysql [options] db_name 比较重要的option 参数有: --database=db_name, -D db_name --host=...

java web开发小记(6)将int类型的list插入到mysql数据库

首先要明确一点,数据库中没有直接与list对应的数据类型,因此要曲线救国,先转换成string再插入数据库 list转换为str 使用join方法 例子 a = ','.join(['abc','def','ghi']) print(a) 就能得到一个string  但是int类型会出点小问题,说int不能用join,因此要先转换成str list...

docker 安装部署 mysql(配置文件启动)

获取 mysql 镜像 docker pull mysql:5.6 docker images 创建容器 创建宿主机 redis 容器的数据和配置文件目录 # 创建宿主机 redis 容器的数据和配置文件目录 mkdir /data/docker/mysql_3306/{conf,data} -p cd /data/docker/mysql_3306 获取...

Azkaban简介和使用

概述 为什么需要工作流调度系统 l 一个完整的数据分析系统通常都是由大量任务单元组成: shell脚本程序,java程序,mapreduce程序、hive脚本等 l 各任务单元之间存在时间先后及前后依赖关系 l 为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行; 例如,我们可能有这样一个需求,某个业务系统每天产生20G原始数据,我们每天...

MySQL性能指标及计算方法

绝大多数MySQL性能指标可以通过以下两种方式获取: (1)mysqladmin 使用mysqladmin extended-status命令获得的MySQL的性能指标,默认为累计值。如果想了解当前状态,需要进行差值计算;加上参数 --relative(-r),就可以看到各个指标的差值,配合参数--sleep(-i)就可以指定刷新的频率。   (2)Sh...

mysql 批处理文件出错后继续执行

在升级批处理sql脚本的时候,由于各种编写的不规范、不可重复执行,我们通常希望在sql脚本出错后不中止,而是执行完成。虽然这些问题可通过编写可重复执行的mysql存储过程比如add_column/drop_column执行,但是很多时候,现成的版本还需要较长一段时间过渡,所以这个需求仍然是有必要的。 其实很简单,只需要加上--force命令行选项即可,如下...