Rumah  >  Artikel  >  pangkalan data  >  Apakah jenis data JDBC Blob? Bagaimana untuk menyimpan dan membaca data di dalamnya?

Apakah jenis data JDBC Blob? Bagaimana untuk menyimpan dan membaca data di dalamnya?

PHPz
PHPzke hadapan
2023-09-14 18:57:10949semak imbas

什么是 JDBC Blob 数据类型?如何存储和读取其中的数据?

BLOB ialah objek besar binari yang boleh menyimpan jumlah data yang berubah-ubah, dengan panjang maksimum 65535 aksara.

Ia digunakan untuk menyimpan sejumlah besar data binari, seperti imej atau jenis data lain. dokumen. Medan yang ditakrifkan sebagai TEXT juga menyimpan sejumlah besar data. Perbezaan antara kedua-duanya ialah pengisihan dan perbandingan data yang disimpan adalah sensitif huruf besar-kecil dalam BLOB tetapi tidak sensitif huruf besar-kecil dalam medan TEKS. Anda tidak menyatakan panjang menggunakan BLOB atau TEXT.

Simpan Blob ke Pangkalan Data

Untuk menyimpan jenis data Blob ke pangkalan data, ikut langkah di bawah menggunakan program JDBC

Langkah 1: Sambung ke pangkalan data

Anda boleh menggunakan kaedah DriverManagergetConnection() untuk menyambung ke pangkalan data

#🎜 Dengan menghantar URL MySQL (

jdbc:mysql://localhost/sampleDB) (dengan contohDB ialah nama pangkalan data), nama pengguna dan kata laluan sebagai parameter kepada kaedah getConnection().

String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");

Langkah 2: Cipta kenyataan yang disediakan

Menggunakan

Sambungan#🎜🎜 #pramuka🎜 ) mencipta objek PreparedStatement. Lulus pertanyaan sisipan (dengan ruang letak) sebagai parameter kepada kaedah ini.

PreparedStatement pstmt = con.prepareStatement("INSERT INTO MyTableVALUES(?, ?)");
Langkah 3: Tetapkan nilai untuk pemegang tempat

Gunakan kaedah penetap bagi #PreparedStatement🎜#PreparedStatement🎜 kepada Nilai ditetapkan kepada pemegang tempat. Pilih kaedah berdasarkan jenis data lajur. Sebagai contoh, jika lajur adalah jenis VARCHAR, gunakan kaedah setString() jika lajur adalah jenis INT, anda boleh menggunakan kaedah setInt().

Jika lajur adalah jenis Blob, anda boleh menetapkan nilainya menggunakan kaedah setBinaryStream() atau setBlob(). Kaedah ini diluluskan pembolehubah integer yang mewakili indeks parameter dan objek kelas InputStream sebagai parameter.

pstmt.setString(1, "sample image");
//Inserting Blob type
InputStream in = new FileInputStream("E:\images\cat.jpg");
pstmt.setBlob(2, in);

Langkah 4: Laksanakan pernyataan

Gunakan PreparedStatement#🎜 #🎜 #🎜🎜🎜 🎜#Kaedah melaksanakan objek PreparedStatement yang dibuat di atas.

Dapatkan gumpalan daripada pangkalan data

Kaedah getBlob() bagi antara muka ResultSet menerima integer yang mewakili indeks lajur (atau nilai rentetan yang mewakili nama lajur), and retrieves Menentukan nilai lajur dan mengembalikannya sebagai objek Blob.

while(rs.next()) {
   rs.getString("Name");
   rs.getString("Type");
   Blob blob = rs.getBlob("Logo");
}
Blob

Kaedah

getBytes()

antara muka mendapatkan semula kandungan #🎜#🎜#🎜#Blob semasa dalam bait Dikembalikan dalam bentuk tatasusunan.

Menggunakan kaedah

getBlob(), anda boleh mendapatkan kandungan gumpalan ke dalam tatasusunan bait dan menciptanya menggunakan write()#🎜🎜 # kaedah ImejFileOutputStream objek.

byte byteArray[] = blob.getBytes(1,(int)blob.length());
FileOutputStream outPutStream = new FileOutputStream("path");
outPutStream.write(byteArray);
Contoh p>

Contoh berikut mencipta jadual jenis data gumpalan dalam pangkalan data MySQL dan memasukkan imej ke dalamnya. Dapatkan dan simpannya dalam sistem fail tempatan.

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
public class BlobExample {
   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 a table
      Statement stmt = con.createStatement();
      stmt.execute("CREATE TABLE SampleTable( Name VARCHAR(255), Image BLOB)");
      System.out.println("Table Created");
      //Inserting values
      String query = "INSERT INTO SampleTable(Name,image) VALUES (?, ?)";
      PreparedStatement pstmt = con.prepareStatement(query);
      pstmt.setString(1, "sample image");
      FileInputStream fin = new FileInputStream("E:\images\cat.jpg");
      pstmt.setBlob(2, fin);
      pstmt.execute();
      //Retrieving the data
      ResultSet rs = stmt.executeQuery("select * from SampleTable");
      int i = 1;
      System.out.println("Contents of the table are: ");
      while(rs.next()) {
         System.out.println(rs.getString("Name"));
         Blob blob = rs.getBlob("Image");
         byte byteArray[] = blob.getBytes(1,(int)blob.length());
         FileOutputStream outPutStream = new
         FileOutputStream("E:\images\blob_output"+i+".jpg");
         outPutStream.write(byteArray);
         System.out.println("E:\images\blob_output"+i+".jpg");
         System.out.println();
         i++;
      }
   }
}
output
Connection established......
Table Created
Contents of the table are:
sample image
E:\images\blob_output1.jpg

Atas ialah kandungan terperinci Apakah jenis data JDBC Blob? Bagaimana untuk menyimpan dan membaca data di dalamnya?. 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