zoukankan      html  css  js  c++  java
  • 用JDBC处理二进制类文件

      数据库中可以存储整数、小数、字符,也可以存储音乐视频等文件,这时候我们可以用二进制的方式。

    四种不同大小的二进制类型,单位为字节

    TinyBlob 255B

    Blob 65k

    MediumBlob 16M

    LongBlob 4G

    package jdbc_preparement;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.sql.Blob;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class text_preparestartment {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
          Connection con=simplecon.getConnection();
          String sql="insert into t_user values(null,?,?,null);";
          String sql1="insert into t_hobby values(?,?)";
         try {
            PreparedStatement ps=con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
            ps.setString(1, "mike");                        //插入一组数据
            ps.setString(2, "4399");
            ps.execute();
            ResultSet re=ps.getGeneratedKeys();             //获得主键
            re.next();
            int n=re.getInt(1);
            System.out.println("自然增长的序号为"+n);
            simplecon.close(re);
            simplecon.close(ps);
            
            PreparedStatement ps1=con.prepareStatement(sql1);   
            ps1.setInt(1, n);
            Blob pic=con.createBlob();          //创建一个二进制类型
            OutputStream out=pic.setBinaryStream(1);   //返回一个流,流向这个二进制存放处,并设置位置为初始位置1
            //读入一个二进制文件
            byte[] b;
            String picname="d:/tupian.jpg";
            b=simple_read.readpic(picname); //自定义的读入图片的类
            
            out.write(b);//将图片的二进制写到Blob中 
            out.flush();
            out.close();
            
            ps1.setBlob(2,pic);//将blob写到数据库中
            ps1.execute();
            
            simplecon.close(ps1);
            simplecon.close(con);
            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    
        }
    
    }
    //连接数据库
    class simplecon { static Connection con; static Connection getConnection() { try{ con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","数据库名","数据库密码"); }catch(SQLException e){ e.printStackTrace(); } return con; } static void close(AutoCloseable a) { try { a.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
    //从文件中读取图片
    class simple_read { static byte[] readpic(String a) { byte[] b=null; try { FileInputStream in=new FileInputStream(a); b=new byte[in.available()]; in.read(b); in.close(); System.out.println("ok!"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return b; } }
  • 相关阅读:
    lsof命令详解
    nmap命令详解
    ss命令详解
    netstat命令详解
    ifup,ifdown命令详解
    playbook部署nginx
    cento7忘记root密码怎么办
    正确关闭selinux
    使用ssh-agent管理私钥
    gitlab中的CI
  • 原文地址:https://www.cnblogs.com/llsq/p/7744726.html
Copyright © 2011-2022 走看看