• Java BLOB 数据的插入与读取 操作


    package com.lw.database;
    
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    /**
     * CREATE:
     *         CREATE TABLE IDCard ( id char(18),pic BLOB);
     * @author liuwei
     * Time: 2015年5月25日 下午3:22:26
     */
    public class LOBTest {
    
        protected static final String DEFAULT_URL = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8";
        protected static final String DRIVER_NAME = "com.mysql.jdbc.Driver";
        
        private Connection connection = null;
        
        public LOBTest() throws ClassNotFoundException, SQLException {
            Class.forName(DRIVER_NAME);
            connection = DriverManager.getConnection(DEFAULT_URL, "user", "password");
        }
        
        public void insert(String id,String path) throws SQLException, IOException {
            PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO IDCard VALUES (?,?)");
            preparedStatement.setString(1, id);
            FileInputStream fileInputStream = new FileInputStream(path);
            preparedStatement.setBlob(2, fileInputStream,fileInputStream.available());
            preparedStatement.execute();
        }
        
        public void get(String id) throws SQLException, IOException {
            PreparedStatement preparedStatement = connection.prepareStatement("SELECT pic FROM IDCard WHERE id = ?");
            preparedStatement.setString(1, id);
            ResultSet results = preparedStatement.executeQuery();
            while(results.next()) {
                FileOutputStream outputStream = new FileOutputStream("/Users/liuwei/temp.png");
                InputStream inputStream = results.getBinaryStream(1);
                int num = -1;
                while((num=inputStream.read())!=-1) {
                    outputStream.write(num);
                }
                outputStream.flush();
                inputStream.close();
                outputStream.close();
            }
        }
        
        public static void main(String[] args) throws ClassNotFoundException, SQLException, IOException {
            LOBTest test = new LOBTest();
            test.insert("78907656784323", "/Users/liuwei/Documents/bt_next_nor.png");
            test.get("78907656784323");
        }
    }

    注意:

      MySQL的四种BLOB类型 

        类型  大小(单位:字节) 

          TinyBlob  最大 255B

            Blob  最大 65K 

            MediumBlob  最大 16M 

          LongBlob  最大 4G 

    插入图像的时候,注意下图像大小,图像超过该类型所能容纳的最大字节的时候,会报错

     

  • 相关阅读:
    c#队列的实现
    c#队列的实现
    C# 自定义控件制作和使用实例(winform)
    常见的位运算
    Clock()函数简单使用(C库函数)
    Python全局变量的简单使用
    PyQt5+Caffe+Opencv搭建人脸识别登录界面
    python3+pyqt5+opencv3简单使用
    OpenCV实现人脸检测
    opencv 截图并保存
  • 原文地址:https://www.cnblogs.com/nashiyue/p/4528155.html
Copyright © 2020-2023  润新知