কম্পিউটার

JDBC ব্লব ডেটা টাইপ কি? কিভাবে এটি থেকে তথ্য সংরক্ষণ এবং পড়তে?


একটি BLOB হল বাইনারি বড় বস্তু যা 65535 অক্ষরের সর্বাধিক দৈর্ঘ্য সহ পরিবর্তনশীল পরিমাণ ডেটা ধারণ করতে পারে।

এগুলি প্রচুর পরিমাণে বাইনারি ডেটা সংরক্ষণ করতে ব্যবহৃত হয়, যেমন ছবি বা অন্যান্য ধরনের ফাইল। টেক্সট হিসাবে সংজ্ঞায়িত ক্ষেত্রগুলিও প্রচুর পরিমাণে ডেটা ধারণ করে। উভয়ের মধ্যে পার্থক্য হল যে সঞ্চিত ডেটার বাছাই এবং তুলনাগুলি BLOB-তে কেস সংবেদনশীল এবং টেক্সট ক্ষেত্রগুলিতে কেস সংবেদনশীল নয়৷ আপনি BLOB বা TEXT এর সাথে একটি দৈর্ঘ্য নির্দিষ্ট করবেন না।

ডাটাবেসে ব্লব সংরক্ষণ করা হচ্ছে

ব্লব ডেটাটাইপ ডাটাবেসে সঞ্চয় করতে, JDBC প্রোগ্রাম ব্যবহার করে নিচে দেওয়া ধাপগুলি অনুসরণ করুন

ধাপ 1:ডাটাবেসের সাথে সংযোগ করুন

আপনি getConnection() ব্যবহার করে একটি ডাটাবেসের সাথে সংযোগ করতে পারেন ড্রাইভার ম্যানেজার এর পদ্ধতি ক্লাস।

MySQL URL পাস করে MySQL ডাটাবেসের সাথে সংযোগ করুন যা হল jdbc:mysql://localhost/sampleDB (যেখানে স্যাম্পলডিবি হল ডাটাবেসের নাম), getConnection() পদ্ধতির প্যারামিটার হিসেবে ব্যবহারকারীর নাম এবং পাসওয়ার্ড।

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

ধাপ 2:একটি প্রস্তুত বিবৃতি তৈরি করুন

prepareStatement() ব্যবহার করে একটি PreparedStatement অবজেক্ট তৈরি করুন সংযোগের পদ্ধতি ইন্টারফেস. এই পদ্ধতিতে একটি প্যারামিটার হিসাবে সন্নিবেশ ক্যোয়ারী (স্থানধারক সহ) পাস করুন।

PreparedStatement pstmt = con.prepareStatement("INSERT INTO MyTableVALUES(?, ?)");

পদক্ষেপ 3:স্থানধারীদের মান সেট করুন

প্রস্তুত স্টেটমেন্টের সেটার পদ্ধতি ব্যবহার করে স্থানধারকদের মান সেট করুন ইন্টারফেস. কলামের ডেটাটাইপ অনুযায়ী পদ্ধতি বেছে নিন। উদাহরণ স্বরূপ কলাম VARCHAR টাইপের হলে setString() পদ্ধতি ব্যবহার করুন এবং যদি এটি INT প্রকারের হয় তাহলে আপনি setInt() পদ্ধতি ব্যবহার করতে পারেন।

এবং যদি এটি ব্লব ধরণের হয় তবে আপনি সেটবাইনারীস্ট্রিম() বা সেটব্লব() পদ্ধতি ব্যবহার করে এটির মান সেট করতে পারেন। এই পদ্ধতিগুলিতে প্যারামিটার সূচক এবং ইনপুটস্ট্রিম ক্লাসের একটি বস্তুকে প্যারামিটার হিসাবে উপস্থাপন করে একটি পূর্ণসংখ্যা ভেরিয়েবল পাস করে৷

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

পদক্ষেপ 4:বিবৃতিটি কার্যকর করুন

execute() ব্যবহার করে উপরে তৈরিকৃত PreparedStatement অবজেক্টটি চালান প্রস্তুত স্টেটমেন্টের পদ্ধতি ইন্টারফেস।

ডাটাবেস থেকে ব্লব পুনরুদ্ধার করা হচ্ছে

রেজাল্টসেট ইন্টারফেসের getBlob() পদ্ধতিটি কলামের সূচকের প্রতিনিধিত্বকারী একটি পূর্ণসংখ্যা গ্রহণ করে (অথবা, কলামের নামের প্রতিনিধিত্ব করে একটি স্ট্রিং মান) এবং নির্দিষ্ট কলামে মানটি পুনরুদ্ধার করে এবং এটি একটি ব্লব অবজেক্টের আকারে ফেরত দেয়।

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

getBytes() ব্লব এর পদ্ধতি ইন্টারফেস বর্তমান ব্লব এর বিষয়বস্তু পুনরুদ্ধার করে অবজেক্ট এবং একটি বাইট অ্যারে হিসাবে রিটার্ন করে।

getBlob() ব্যবহার করে পদ্ধতিতে আপনি একটি বাইট অ্যারেতে ব্লবের বিষয়বস্তু পেতে পারেন এবং write() ব্যবহার করে একটি চিত্র তৈরি করতে পারেন FileOutputStream এর পদ্ধতি বস্তু।

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

উদাহরণ

নিম্নলিখিত উদাহরণটি MySQL ডাটাবেসে ব্লব ডেটাটাইপ সহ একটি টেবিল তৈরি করে, এতে চিত্র সন্নিবেশিত করে। এটিকে পুনরুদ্ধার করে এবং স্থানীয় ফাইল সিস্টেমে সঞ্চয় করে।

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

  1. কীভাবে একটি txt ফাইলে তালিকা সংরক্ষণ করবেন এবং অ্যান্ড্রয়েডে txt ফাইল থেকে তালিকা পড়তে হবে?

  2. অ্যান্ড্রয়েড স্কলাইটে ব্লব ডেটা টাইপ কীভাবে ব্যবহার করবেন?

  3. JDBC ফলাফল কি? কিভাবে ResultSet অবজেক্ট থেকে ডেটা পুনরুদ্ধার করবেন?

  4. উইন্ডোজ সার্ভার কি এবং কিভাবে এটি উইন্ডোজ থেকে পৃথক?