我的编程空间,编程开发者的网络收藏夹
学习永远不晚

什么是 JDBC Blob 数据类型?如何存储和读取其中的数据?

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

什么是 JDBC Blob 数据类型?如何存储和读取其中的数据?

BLOB 是二进制大对象,可以容纳可变数量的数据,最大长度为 65535 个字符。

它们用于存储大量二进制数据,例如图像或其他类型的数据。文件。定义为 TEXT 的字段也保存大量数据。两者之间的区别在于,存储数据的排序和比较在 BLOB 中区分大小写,而在 TEXT 字段中不区分大小写。您没有使用 BLOB 或 TEXT 指定长度。

将 Blob 存储到数据库

要将 Blob 数据类型存储到数据库,请使用 JDBC 程序按照以下步骤操作

第 1 步:连接到数据库

您可以使用 DriverManagergetConnection() 方法连接到数据库

通过传递 MySQL URL(jdbc:mysql://localhost/sampleDB)(其中 exampleDB 是数据库名称)、用户名和密码作为 getConnection() 方法的参数。

String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");

第二步:创建预编译语句

使用Connection接口的prepareStatement()方法创建一个PreparedStatement对象。将插入查询(带有占位符)作为参数传递给此方法。

PreparedStatement pstmt = con.prepareStatement("INSERT INTO MyTableVALUES(?, ?)");

第 3 步:为占位符设置值

使用 PreparedStatement 接口的 setter 方法将值设置为占位符。根据列的数据类型选择方法。例如,如果列是 VARCHAR 类型,则使用 setString() 方法;如果列是 INT 类型,则可以使用 setInt() 方法。

如果列是 Blob 类型,则可以使用以下方法为其设置值setBinaryStream() 或 setBlob() 方法。向这些方法传递一个表示参数索引的整数变量和一个 InputStream 类的对象作为参数。

pstmt.setString(1, "sample image");
//Inserting Blob type
InputStream in = new FileInputStream("E:\images\cat.jpg");
pstmt.setBlob(2, in);

第四步:执行语句

使用PreparedStatement接口的execute()方法执行上述创建的PreparedStatement对象。

从数据库中检索blob

ResultSet接口的getBlob()方法接受一个整数,表示列的索引(或者一个表示列名的字符串值),并检索指定列的值,并以Blob对象的形式返回。

while(rs.next()) {
   rs.getString("Name");
   rs.getString("Type");
   Blob blob = rs.getBlob("Logo");
}

Blob 接口的 getBytes() 方法检索当前 Blob 对象的内容并以字节数组形式返回。

使用getBlob()方法,您可以将blob的内容获取到字节数组中,并使用write()方法创建图像FileOutputStream 对象。

byte byteArray[] = blob.getBytes(1,(int)blob.length());
FileOutputStream outPutStream = new FileOutputStream("path");
outPutStream.write(byteArray);

示例

以下示例在 MySQL 数据库中创建一个 blob 数据类型的表,并向其中插入图像。将其检索并存储在本地文件系统中。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
public class BlobExample {
   public static void main(String args[]) throws Exception {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //Getting the connection
      String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Creating a table
      Statement stmt = con.createStatement();
      stmt.execute("CREATE TABLE SampleTable( Name VARCHAR(255), Image BLOB)");
      System.out.println("Table Created");
      //Inserting values
      String query = "INSERT INTO SampleTable(Name,image) VALUES (?, ?)";
      PreparedStatement pstmt = con.prepareStatement(query);
      pstmt.setString(1, "sample image");
      FileInputStream fin = new FileInputStream("E:\images\cat.jpg");
      pstmt.setBlob(2, fin);
      pstmt.execute();
      //Retrieving the data
      ResultSet rs = stmt.executeQuery("select * from SampleTable");
      int i = 1;
      System.out.println("Contents of the table are: ");
      while(rs.next()) {
         System.out.println(rs.getString("Name"));
         Blob blob = rs.getBlob("Image");
         byte byteArray[] = blob.getBytes(1,(int)blob.length());
         FileOutputStream outPutStream = new
         FileOutputStream("E:\images\blob_output"+i+".jpg");
         outPutStream.write(byteArray);
         System.out.println("E:\images\blob_output"+i+".jpg");
         System.out.println();
         i++;
      }
   }
}

输出

Connection established......
Table Created
Contents of the table are:
sample image
E:\images\blob_output1.jpg

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

什么是 JDBC Blob 数据类型?如何存储和读取其中的数据?

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

什么是 JDBC Blob 数据类型?如何存储和读取其中的数据?

BLOB 是二进制大对象,可以容纳可变数量的数据,最大长度为 65535 个字符。它们用于存储大量二进制数据,例如图像或其他类型的数据。文件。定义为 TEXT 的字段也保存大量数据。两者之间的区别在于,存储数据的排序和比较在 BLOB 中区
2023-10-22

什么是 JDBC Blob 数据类型如何存储和读取其中的数据

JDBC Blob(Binary Large Object)是一种用于存储大型二进制数据的数据类型,比如图片、音频、视频等。在数据库中,Blob数据类型存储的是二进制数据的指针,而不是实际的数据。实际的数据可以通过Java程序进行存储和读取
2023-10-10

数据库中blob类型如何存取

在数据库中存取blob类型的数据,可以使用以下方法:1. 通过编程语言的API将blob数据写入数据库。大多数编程语言都提供了API来操作数据库,可以使用这些API来将blob数据写入数据库中的blob字段。2. 使用数据库管理工具将blo
2023-09-21

oracle中blob字段都能存什么类型的数据

oracle blob 字段可存储以下数据类型:图像、视频、音频、文档、应用程序包和数据库备份,以及应用程序创建的任何其他自定义二进制数据。Oracle BLOB 字段可存储的数据类型Oracle BLOB(二进制大对象)字段是一种数据类
oracle中blob字段都能存什么类型的数据
2024-04-30

MySQL 中的 BLOB 和 TEXT 数据类型有什么区别?

BLOB代表Binary Large Objects,顾名思义,它可以用于存储二进制数据,而TEXT用于存储大量字符串。 BLOB可以用来存储二进制数据,这意味着我们还可以存储图片、视频、声音和程序。例如,下面的图像可以存储为 BLOB,
2023-10-22

Redis中的Hash类型是用来存储什么样的数据

Redis中的Hash类型是用来存储键值对的数据结构,其中每个键都对应一个哈希表,哈希表中存储了多个键值对。这种数据结构适用于存储对象的字段和值,如存储用户信息、商品信息等。可以通过Hash类型实现对对象的部分字段更新或查询。
Redis中的Hash类型是用来存储什么样的数据
2024-04-09

Teradata如何支持多种数据格式和数据类型的存储与查询

Teradata支持多种数据格式和数据类型的存储与查询,包括结构化数据和非结构化数据。Teradata提供了多种数据类型用于存储不同类型的数据,例如整数、浮点数、字符串、日期时间等。此外,Teradata还支持嵌套数据类型,如数组、结构体、
Teradata如何支持多种数据格式和数据类型的存储与查询
2024-04-09

CentOS中/var目录通常用来存储什么类型的数据

/var目录通常用来存储可变数据,例如日志文件、缓存、邮件和数据库文件等。在CentOS系统中,大多数服务和应用程序都会将相关的数据文件存储在/var目录下,以便进行读写操作。因此,/var目录通常会包含各种各样的数据文件,用于支持系统的正
CentOS中/var目录通常用来存储什么类型的数据
2024-04-25

编程热搜

目录