blob类型字段[通俗易懂]

blob类型字段[通俗易懂]1、在mysql中,bolb是一个二进制大型对象,是一个储存大量数据的容器,例如图片,音频。2、插入blob类型数据比如使用preparedStatement,而不能使用Statment,因为blob类型数据不能使用字符串拼接。有关preparedStatement的使用请参考https://blog.csdn.net/weixin_46457946/article/details/1197812273、mysql的四种blob类型类型大小TinyBlob255byte.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

1、在mysql中,bolb是一个二进制大型对象,是一个储存大量数据的容器,例如图片,音频。
2、插入blob类型数据比如使用preparedStatement,而不能使用Statment,因为blob类型数据不能使用字符串拼接。有关preparedStatement的使用请参考https://blog.csdn.net/weixin_46457946/article/details/119781227
3、mysql的四种blob类型

类型 大小
TinyBlob 255byte
Blob 65k
MediumBlob 16M
Long 4G

4、储存的文件过大,会造成数据库的性能下降。

一、Blob数据类型应用,向数据库中插入图片

 @Test
    public void testInsert() { 
   
        Connection conn=null;
        PreparedStatement ps=null;
        try { 
   
            //1、连接数据库
            conn = JDBCUtils.getConnection();
            //2、预编译sql
            String sql = "insert into customers(name,email,birth,photo) values(?,?,?,?)";
            //3、获得PreparedStatement对象
            ps = conn.prepareStatement(sql);
            ps.setObject(1, "刘备");
            ps.setObject(2, "liu@qq.com");
            ps.setObject(3, "1992-09-08");
            FileInputStream is = new FileInputStream(new File("推广004.png"));
            ps.setBlob(4, is);
            //提交
            ps.execute();
        } catch (Exception e) { 
   
            e.printStackTrace();
        } finally { 
   
            JDBCUtils.closeResouce(conn, ps);
        }
    }

Jetbrains全家桶1年46,售后保障稳定

二、从数据库中读取Blob数据

@Test
    public void testQuery(){ 
   
        Connection conn=null;
        PreparedStatement ps=null;
        ResultSet rs=null;
        InputStream is=null;
        FileOutputStream fos=null;
        try { 
   
            //1、连接数据库
            conn = JDBCUtils.getConnection();

            //2、预编译sql
            String sql = "select id,name,email,birth,photo from customers where id = ?";

            ps = conn.prepareStatement(sql);
            ps.setInt(1, 27);

            //3、提交数据
            rs = ps.executeQuery();

            if(rs.next()){ 
   
                int id=rs.getInt("id");
                String name=rs.getString("name");
                String email=rs.getString("email");
                Date birth = rs.getDate("birth");

                Customer cus = new Customer(id,name,email,birth);
                System.out.println(cus);

                //将Blob类型以文件的方式保存在本地
                Blob photo = rs.getBlob("photo");
                is = photo.getBinaryStream();
                fos = new FileOutputStream("01.jpg");
                byte[] buffer = new byte[1024];
                int len;
                while ((len=is.read(buffer))!=-1){ 
   
                    fos.write(buffer,0,len);
                }
            }
        } catch (Exception e) { 
   
            e.printStackTrace();
        }finally { 
   
            try { 
   
                if(is != null)
                    is.close();
            } catch (IOException e) { 
   
                e.printStackTrace();
            }

            try { 
   
                if(fos != null)
                    fos.close();
            } catch (IOException e) { 
   
                e.printStackTrace();
            }
            JDBCUtils.closeResource(conn,ps,rs);
            }
        }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215916.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • oycharm激活码_通用破解码

    oycharm激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
  • java工程师简历项目经验怎么写_高级java开发工程师简历

    java工程师简历项目经验怎么写_高级java开发工程师简历开头在找工作的过程中,对于Redis技术知识的掌握已经成为必须的技能。美团面试常常就会被问到Redis相关知识,而这次我就差点倒在了美团3面,面试官连问我以下几个Redis的问题,然后就卡壳了…redis了解吗?你说说怎么用redis实现分布式锁?Redis常用数据结构及底层数据结构实现如何解决Redis的并发竞争Key问题如何保证缓存与数据库双写时的数据一致性?剩下的不太记得了…为此面试完回来针Redis专门做了一个面试问题大总结架构筑基大家都知道,性能一直

    2022年11月2日
  • outputstream的子类_java里input

    outputstream的子类_java里inputJavaInputStream类在本教程中,我们将通过一个示例来学习JavaInputStream类及其方法。java.io包的InputStream类是一个抽象超类,它表示字节的输入流。由于InputStream是抽象类,因此它本身没有用。但是,其子类可用于读取数据。InputStream的子类为了使用的InputStream功能,我们可以使用其子类。它的子类有:在下一个教程中,我们将学习…

    2022年9月17日
  • 数字金额大小写转换

    数字金额大小写转换

    2021年12月17日
  • qt 当前窗口句柄_QT获取窗口句柄

    qt 当前窗口句柄_QT获取窗口句柄mac安装paramiko$brewinstallopenssl$/usr/local/opt/openssl/bin/c_rehash$exportARCHFLAGS=”-archx86_64&q…用Canvas制作剪纸效果在做剪纸效果之前,先介绍剪纸效果运用到的一些知识:1.阴影:在Canvas之中进行绘制时,可以通过修改绘图环境中的如下4个属性值来指定阴影…

    2022年7月14日
  • 智能车竞赛拿奖难吗_全国大学生智能小车竞赛

    智能车竞赛拿奖难吗_全国大学生智能小车竞赛简介:本文给出了第一轮参加线上比赛队伍信息汇总。总共包括了八个表格,分别用于组织线上比赛抽签过程所使用。关键词:智能车竞赛,线上总决赛,参赛队伍 §01基础四轮组学校名称队伍名称指导老师1指导老师2参赛队员1参赛队员2参赛队员3安徽中医药大学狂躁呼吸阚峻岭沈同平马晓豪刘迪汪忠良陆军装甲兵学院陆装四轮组魏宁王宇王浩李成光张志伟安徽信息工程学院常青竹一队刘传柱王欣桐赵吉强金子恒郑小宇青岛科技大学..

    2022年9月1日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号