setBinaryStream() প্রস্তুত স্টেটমেন্টের পদ্ধতি ইন্টারফেস প্যারামিটারের সূচক এবং একটি ইনপুটস্ট্রিম অবজেক্টের প্রতিনিধিত্বকারী একটি পূর্ণসংখ্যা গ্রহণ করে এবং প্রদত্ত ইনপুটস্ট্রিম অবজেক্টে প্যারামিটার সেট করে। যখনই আপনাকে খুব বড় বাইনারি মান পাঠাতে হবে আপনি এই পদ্ধতিটি ব্যবহার করতে পারেন।
এবং এসকিউএল ডাটাবেস ব্লব (বাইনারী লার্জ অবজেক্ট) নামে একটি ডেটাটাইপ প্রদান করে এতে আপনি ছবির মতো বড় বাইনারি ডেটা সঞ্চয় করতে পারেন।
JDBC ব্যবহার করে ছবি সংরক্ষণ করা হচ্ছে
আপনি যদি JDBC প্রোগ্রাম ব্যবহার করে একটি ডাটাবেসে একটি চিত্র সংরক্ষণ করতে চান তবে নীচে দেখানো হিসাবে একটি ব্লব ডেটাটাইপ সহ একটি টেবিল তৈরি করুন:
CREATE TABLE Tutorial(Name VARCHAR(255), Type INT NOT NULL, Logo BLOB);
এখন, JDBC ব্যবহার করে, ডাটাবেসের সাথে সংযোগ করুন এবং একটি প্রস্তুত বিবৃতি প্রস্তুত করুন উপরের তৈরি টেবিলে মান সন্নিবেশ করতে:
String query = "INSERT INTO Tutorial(Name, Type, Logo) VALUES (?, ?, ?)"; PreparedStatement pstmt = con.prepareStatement(query);
PreparedStatement ইন্টারফেসের সেটার পদ্ধতি ব্যবহার করে প্লেস হোল্ডারদের জন্য মান সেট করুন এবং setBinaryStream() পদ্ধতি ব্যবহার করে ব্লব ডেটাটাইপ সেট মান সেট করুন।
FileInputStream fin = new FileInputStream("javafx_logo.jpg");pstmt.setBinaryStream(3, fin);
উদাহরণ
JDBC প্রোগ্রাম ব্যবহার করে একটি MySQL ডাটাবেসে ইমেজ কিভাবে সন্নিবেশ করা যায় তা দেখানোর একটি উদাহরণ নিচে দেওয়া হল। এখানে আমরা টেবিলে একটি ব্লব ডেটাটাইপ সন্নিবেশিত মান সহ একটি টেবিল তৈরি করছি (বাইনারীস্ট্রিম ব্লব টাইপ অবজেক্ট) এবং, টেবিলের বিষয়বস্তু পুনরুদ্ধার করা হয়েছে।
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(); } } }
আউটপুট
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
দ্রষ্টব্য: আপনি JDBC প্রোগ্রাম ব্যবহার করে শুধুমাত্র .gif বা .jpeg বা .png ধরনের ছবি সংরক্ষণ এবং পুনরুদ্ধার করতে পারেন।