如何使用 JDBC 將二進位制資料插入表中?


SQL 資料庫提供了一種名為 Blob(二進位制大物件)的資料型別,您可以在其中儲存大型二進位制資料,例如影像。

為了將二進位制(流)值儲存到表中,JDBC 在 **PreparedStatement** 介面中提供了一種名為 **setBinaryStream()** 的方法。

它接受一個表示繫結變數索引的整數,該繫結變量表示儲存 BLOB 型別值的列,一個儲存二進位制資料的 InputStream 物件,並將給定資料插入到指定的列中。

您可以使用此方法將二進位制流資料插入到表中,如下所示:

FileInputStream fin = new FileInputStream("javafx_logo.jpg");
pstmt.setBinaryStream(3, fin);

示例

讓我們使用如下所示的 CREATE 語句在 MySQL 中建立一個名為 **tutorials_data** 的表:

CREATE TABLE tutorials_data(
   Name VARCHAR(255),
   Type VARCHAR(50),
   Logo BLOB
);

以下 JDBC 程式建立與 MySQL 的連線,並將 3 條記錄插入到 tutorials_data 表中。

作為第 3 列 LOGO 的值,此程式使用 **PreparedStatement** 介面的 **setBinaryStream()** 方法儲存二進位制資料(來自本地目錄的影像)。

import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class BinaryDataToTable {
   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:///sampledatabase";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Inserting values
      String query = "INSERT INTO tutorials_dataa(Name, Type, Logo) VALUES (?, ?, ?)";
      PreparedStatement pstmt = con.prepareStatement(query);
      pstmt.setString(1, "JavaFX");
      pstmt.setString(2, "Java_library");
      FileInputStream fin = new FileInputStream("javafx_logo.jpg");
      pstmt.setBinaryStream(3, fin);
      pstmt.execute();
      pstmt.setString(1, "CoffeeScript");
      pstmt.setString(2, "scripting Language");
      fin = new FileInputStream("coffeescript_logo.jpg");
      pstmt.setBinaryStream(3, fin);
      pstmt.execute();
      pstmt.setString(1, "Cassandra");
      pstmt.setString(2, "NoSQL database");
      fin = new FileInputStream("cassandra_logo.jpg");
      pstmt.setBinaryStream(3, fin);
      pstmt.execute();
      System.out.println("Records inserted......");
   }
}

輸出

Connection established......
Records inserted......

更新於: 2019-07-30

1K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告