编写一个 JDBC 示例,用于将 Blob 数据类型的值插入到表中?


假设我们已经在数据库中有一个名为 MyTable 的表,其描述如下。

+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| Name  | varchar(255) | YES  |     | NULL    |       |
| image | blob         | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+

如果您需要使用 JDBC 程序将值插入到 blob 数据类型中,则需要使用设置二进制流数据的方法。PreparedStatement 接口提供以下方法将图像插入到表中。

**void setBinaryStream(int parameterIndex, InputStream x)** 方法将给定输入流中的数据(直到文件末尾)作为值设置为给定索引处的参数。

此方法的其他变体是

  • void setBinaryStream(int parameterIndex, InputStream x, int length)

  • void setBinaryStream(int parameterIndex, InputStream x, long length)

**void setBlob(int parameterIndex, Blob x)** 方法将给定的 blob 对象作为值设置为给定索引处的参数。

此方法的其他变体是

  • void setBlob(int parameterIndex, InputStream inputStream)

  • void setBlob(int parameterIndex, InputStream inputStream, long length)

您可以使用这些方法中的任何一个将值设置为 Blob 数据类型。

示例

以下示例使用 setBinaryStream() 方法将值设置为 Blob 数据类型。

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class IndertingValueForBlob {
   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://127.0.0.1/sampleDB";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");

      //Inserting values
      String query = "INSERT INTO MyTable(Name,image) VALUES (?, ?)";
      PreparedStatement pstmt = con.prepareStatement(query);
      pstmt.setString(1, "sample_image");
      FileInputStream fin = new FileInputStream("E:\images\cat.jpg");
      pstmt.setBinaryStream(2, fin);
      pstmt.execute();
      System.out.println("Record inserted .....");
   }
}

输出

Connection established......
Record inserted ......

如果您尝试使用 MySQL 工作台查看记录中的 blob 值,则可以看到插入的图像,如下所示

更新于: 2019年7月30日

2K+ 浏览量

启动你的 职业生涯

通过完成课程获得认证

开始
广告