Bagaimana untuk memasukkan imej ke dalam pangkalan data menggunakan JDBC?

WBOY
Lepaskan: 2023-08-29 14:05:02
ke hadapan
814 orang telah melayarinya

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);
Salin selepas log masuk

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);
Salin selepas log masuk

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);
Salin selepas log masuk

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();
      }
   }
}
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan