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.
Untuk menyimpan jenis data Blob ke pangkalan data, ikut langkah di bawah menggunakan program JDBC
Langkah 1: Sambung ke pangkalan dataAnda 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");
Langkah 2: Cipta kenyataan yang disediakan
MenggunakanSambungan# #pramuka )mencipta objek PreparedStatement. Lulus pertanyaan sisipan (dengan ruang letak) sebagai parameter kepada kaedah ini.
PreparedStatement pstmt = con.prepareStatement("INSERT INTO MyTableVALUES(?, ?)");
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);
GunakanPreparedStatement# # # #Kaedah melaksanakan objek PreparedStatement yang dibuat di atas.
Dapatkan gumpalan daripada pangkalan dataKaedah 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"); }
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);
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++; } } }
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!