Rumah >pangkalan data >tutorial mysql >Bagaimana untuk memasukkan imej ke dalam pangkalan data menggunakan JDBC?

Bagaimana untuk memasukkan imej ke dalam pangkalan data menggunakan JDBC?

WBOY
WBOYke hadapan
2023-08-29 14:05:02846semak imbas

Kaedah

如何使用 JDBC 将图像插入数据库?

PreparedStatementantaramuka setBinaryStream() menerima integer yang mewakili indeks parameter dan objek InputStream, dan menetapkan parameter kepada objek InputStream yang diberikan. Anda boleh menggunakan kaedah ini bila-bila masa anda perlu menghantar nilai binari yang sangat besar.

Pangkalan data SQL menyediakan jenis data yang dipanggil Blob (Binary Large Object) di mana anda boleh menyimpan data binari yang besar seperti imej.

Simpan imej menggunakan JDBC

Jika anda perlu menyimpan imej dalam pangkalan data menggunakan program JDBC, buat jadual jenis data Blob seperti ditunjukkan di bawah:

CREATE TABLE Tutorial(Name VARCHAR(255), Type INT NOT NULL, Logo BLOB);

Sekarang, sambung ke pangkalan data menggunakan JDBC dan sediakan PreparedStatement Sisipkan nilai ke dalam jadual yang dibuat di atas:

String query = "INSERT INTO Tutorial(Name, Type, Logo) VALUES (?, ?, ?)";
PreparedStatement pstmt = con.prepareStatement(query);

Tetapkan nilai pemegang tempat menggunakan kaedah penetap antara muka PreparedStatement dan tetapkan nilai jenis data Blob menggunakan kaedah setBinaryStream().

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

Contoh

Contoh berikut menunjukkan cara memasukkan imej ke dalam pangkalan data MySQL menggunakan program JDBC. Di sini, kami mencipta jadual yang mengandungi jenis data Blob, memasukkan nilai ke dalam jadual (objek BinaryStream jenis Blob), dan mendapatkan semula kandungan jadual.

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class InsertingImageToDatabase {
   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 the Statement
      Statement stmt = con.createStatement();
      //Executing the statement
      String createTable = "CREATE TABLE Tutorial( "
         + "Name VARCHAR(255), "
         + "Type VARCHAR(50), "
         + "Logo BLOB)";
      stmt.execute(createTable);
      //Inserting values
      String query = "INSERT INTO Tutorial(Name, Type, Logo) VALUES (?, ?, ?)";
      PreparedStatement pstmt = con.prepareStatement(query);
      pstmt.setString(1, "JavaFX");
      pstmt.setString(2, "Java_library");
      FileInputStream fin = new FileInputStream("E:\images\javafx_logo.jpg");
      pstmt.setBinaryStream(3, fin);
      pstmt.execute();

      pstmt.setString(1, "CoffeeScript");
      pstmt.setString(2, "scripting Language");
      fin = new FileInputStream("E:\images\coffeescript_logo.jpg");
      pstmt.setBinaryStream(3, fin);
      pstmt.execute();
      pstmt.setString(1, "Cassandra");
      pstmt.setString(2, "NoSQL database");
      fin = new FileInputStream("E:\images\cassandra_logo.jpg");
      pstmt.setBinaryStream(3, fin);
      pstmt.execute();
      System.out.println("Data inserted");
      ResultSet rs = stmt.executeQuery("Select *from Tutorial");
      while(rs.next()) {
         System.out.print("Name: "+rs.getString("Name")+", ");
         System.out.print("Tutorial Type: "+rs.getString("Type")+", ");
         System.out.print("Logo: "+rs.getBlob("Logo"));
         System.out.println();
      }
   }
}

Output

Connection established......
Data inserted
Name: JavaFX, Tutorial Type: Java_library, Logo: com.mysql.jdbc.Blob@7dc5e7b4
Name: CoffeeScript, Tutorial Type: scripting Language, Logo:
com.mysql.jdbc.Blob@1ee0005
Name: Cassandra, Tutorial Type: NoSQL database, Logo: com.mysql.jdbc.Blob@75a1cd57

Nota: Anda hanya boleh menyimpan dan mendapatkan semula imej jenis .gif atau .jpeg atau .png menggunakan program JDBC.

Atas ialah kandungan terperinci Bagaimana untuk memasukkan imej ke dalam pangkalan data menggunakan JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam