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

PHPz
Lepaskan: 2023-09-14 18:57:10
ke hadapan
905 orang telah melayarinya

什么是 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 kaedahDriverManagergetConnection() 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");
Salin selepas log masuk

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(?, ?)");
Salin selepas log masuk
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);
Salin selepas log masuk

Langkah 4: Laksanakan pernyataan

GunakanPreparedStatement# # # #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"); }
Salin selepas log masuk
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 menggunakanwrite()# # kaedah ImejFileOutputStreamobjek.

byte byteArray[] = blob.getBytes(1,(int)blob.length()); FileOutputStream outPutStream = new FileOutputStream("path"); outPutStream.write(byteArray);
Salin selepas log masuk
Contoh

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++; } } }
Salin selepas log masuk
output
Connection established...... Table Created Contents of the table are: sample image E:\images\blob_output1.jpg
Salin selepas log masuk

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!

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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!