zoukankan      html  css  js  c++  java
  • 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 

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

     

  • 相关阅读:
    php单元测试
    git配置本地环境(phpstudy/tortoisegit/git等)
    xp/win7中系统安装memcached服务,卸载memcached服务,以及删除memcached服务
    memcached装、启动和卸载
    如何安装memcached
    三元运算符、逻辑运算符
    移动端页面怎么适配ios页面
    javascript正则表达式——元字符
    一个div添加多个背景图片
    GNU Screen使用入门
  • 原文地址:https://www.cnblogs.com/nashiyue/p/4528155.html
Copyright © 2011-2022 走看看