首页 > 其他分享 >jdbc之操作BLOB类型字段

jdbc之操作BLOB类型字段

时间:2022-10-22 15:31:47浏览次数:67  
标签:ps jdbc rs BLOB 类型 new conn Blob


MySQL BLOB类型

MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。

插入BLOB类型的数据必须使用PreparedStatement,因为BLOB类型的数据无法使用字符串拼接写的。

MySQL的四种BLOB类型(除了在存储的最大信息量上不同外,他们是等同的)

jdbc之操作BLOB类型字段_sql

 

实际使用中根据需要存入的数据大小定义不同的BLOB类型。

需要注意的是:如果存储的文件过大,数据库的性能会下降。

如果在指定了相关的Blob类型以后,还报错:xxx too large,那么在mysql的安装目录下,找my.ini文件加上如 下的配置参数: max_allowed_packet=16M。同时注意:修改了my.ini文件之后,需要重新启动mysql服务。  

向数据表中插入大数据类型 

//获取连接

Connection conn = JDBCUtils.getConnection();


String sql = "insert into customers(name,email,birth,photo)values(?,?,?,?)";

PreparedStatement ps = conn.prepareStatement(sql);

// 填充占位符

ps.setString(1, "徐海强");

ps.setString(2, "[email protected]");

ps.setDate(3, new Date(new java.util.Date().getTime()));

// 操作Blob类型的变量

FileInputStream fis = new FileInputStream("xhq.png");

ps.setBlob(4, fis);

//执行

ps.execute();


fis.close();

JDBCUtils.closeResource(conn, ps);

修改数据表中的Blob类型字段 

Connection conn = JDBCUtils.getConnection();

String sql = "update customers set photo = ? where id = ?";

PreparedStatement ps = conn.prepareStatement(sql);

// 填充占位符

// 操作Blob类型的变量

FileInputStream fis = new FileInputStream("coffee.png");

ps.setBlob(1, fis);

ps.setInt(2, 25);

ps.execute();

fis.close();

JDBCUtils.closeResource(conn, ps);

从数据表中读取大数据类型 

String sql = "SELECT id, name, email, birth, photo FROM customer WHERE id = ?";

conn = getConnection();

ps = conn.prepareStatement(sql);

ps.setInt(1, 8);

rs = ps.executeQuery();

if(rs.next()){
Integer id = rs.getInt(1);
String name = rs.getString(2);
String email = rs.getString(3);
Date birth = rs.getDate(4);
Customer cust = new Customer(id, name, email, birth);
System.out.println(cust);
//读取Blob类型的字段

Blob photo = rs.getBlob(5);
InputStream is = photo.getBinaryStream();
OutputStream os = new FileOutputStream("c.jpg");
byte [] buffer = new byte[1024];
int len = 0;
while((len = is.read(buffer)) != -1){
os.write(buffer, 0, len);
}
JDBCUtils.closeResource(conn, ps, rs);

if(is != null){
is.close();
}

if(os != null){
os.close();
}

}

标签:ps,jdbc,rs,BLOB,类型,new,conn,Blob
From: https://blog.51cto.com/u_15786786/5785899

相关文章

  • jdbc之批量插入
    批量执行SQL语句当需要成批插入或者更新记录时,可以采用Java的批量更新机制,这一机制允许多条语句一次性提交给数据库批量处理。通常情况下比单独提交处理更有效率JDBC的批量......
  • 列表,元组,字符串——数据类型三剑客【python启蒙】python基础的归类学习,内含思维导图
    〇引言  橘子们大家好,学完这一篇,可以说python最基本的知识就完结了。对大家来说是迈向新高的路途,对我来说,我也要去挑战更高难度的博客。我在深圳技术大学跟着OIC开源创......
  • DCL_管理权限与JDBC_概念
    DCL_管理权限权限管理:查询权限:1.基本语法格式:showgrantsfor'用户名'@'主机名';......
  • X-Content-Type-Options: nosniff 禁用浏览器类型猜测保证安全性
    在开发我的客服系统项目的时候,看到浏览器开发者模式有报错,是安全相关的错误,提示让加上这个响应头原因是下面这样的:互联网上的资源有各种类型,通常浏览器会根据响应头的Con......
  • Java基本数据类型占用字节大小简介说明
    转自:​​http://www.java265.com/JavaMianJing/202205/16515929083261.html​​下文笔者讲述Java中基本数据类型占用字节大小的简介说明,如下所示基础数据类型是所有数据类......
  • JDBC管理事务_实现和数据库连接池_概述
    JDBC管理事务_实现:1.使用connection对象来管理事务开启事务:setAutoCommit(booleanautoCommit):调用该方法设置参数为false,即开后事务在执行sql之前开启事务提交事务:comm......
  • JDBC管理事务概述以及实现
    JDBC管理事务-概述JDBC控制事务:1.事务:一个包含多个步骤的业务操作,如果这个业务操作被事务管理,则这多个步骤要么同时成功,要么同时失败2.操作:1.开启事务......
  • mysql 中datetime类型相减结果是多少秒
    1.mysql中datetime类型相减  结果是多少秒  2.java中java.util.date类型相减是毫秒  ......
  • JAVA基本类型和包装类型
    JAVA基本类型和包装类型前言Java语言中的数据类型分为基本数据类型和引用类型,而我们进行Java开发的时候都听说过基本数据类型和包装类型,今天我们就来详细聊一聊Java中的......
  • 数据库-jdbc的使用
    1、execute与executeUpdate异同点摘自相同点:execute与executeUpdate都可以执行增加,删除,修改的操作。packagejdbc;importjava.sql.Connection;importjava.sql......