如何使用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表中。

作为第三列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 {

      //注册驱动程序

      DriverManager.registerDriver(new com.mysql.jdbc.Driver());

      //获得连接

      String mysqlUrl = "jdbc:mysql://localhost/sampledatabase";

      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");

      System.out.println("Connection established......");

      //插入值

      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......

以上是 如何使用JDBC将二进制数据插入表中? 的全部内容, 来源链接: utcz.com/z/331343.html

回到顶部