मान लें कि डेटाबेस में पहले से ही MyTable नाम की एक टेबल है जिसका विवरण निम्नलिखित है।
+-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | Name | varchar(255) | YES | | NULL | | | image | blob | YES | | NULL | | +-------+--------------+------+-----+---------+-------+
यदि आपको JDBC प्रोग्राम का उपयोग करके Blob डेटा टाइप में मान डालने की आवश्यकता है तो आपको उन मेथड का उपयोग करना होगा जो बाइनरी स्ट्रीम डेटा सेट करते हैं। PreparedStatement इंटरफ़ेस टेबल में इमेज डालने के लिए निम्नलिखित मेथड प्रदान करता है।
void setBinaryStream(int parameterIndex, InputStream x) मेथड दिए गए इनपुट स्ट्रीम में डेटा (फाइल के अंत तक) को दिए गए इंडेक्स पर पैरामीटर के मान के रूप में सेट करता है।
इस मेथड के अन्य वेरिएंट हैं
void setBinaryStream(int parameterIndex, InputStream x, int length)
void setBinaryStream(int parameterIndex, InputStream x, long length)
void setBlob(int parameterIndex, Blob x) मेथड दिए गए Blob ऑब्जेक्ट को दिए गए इंडेक्स पर पैरामीटर के मान के रूप में सेट करता है।
इस मेथड के अन्य वेरिएंट हैं
void setBlob(int parameterIndex, InputStream inputStream)
void setBlob(int parameterIndex, InputStream inputStream, long length)
आप इनमें से किसी भी मेथड का उपयोग करके Blob डेटा टाइप में मान सेट कर सकते हैं।
उदाहरण
निम्नलिखित उदाहरण setBinaryStream() मेथड का उपयोग करके Blob डेटाटाइप के लिए मान सेट करता है।
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class IndertingValueForBlob { public static void main(String args[]) throws Exception{ // ड्राइवर रजिस्टर करना DriverManager.registerDriver(new com.mysql.jdbc.Driver()); // कनेक्शन प्राप्त करना String mysqlUrl = "jdbc:mysql://localhost/sampleDB"; Connection con = DriverManager.getConnection(mysqlUrl, "root", "password"); System.out.println("Connection established......"); // मान डालना String query = "INSERT INTO MyTable(Name,image) VALUES (?, ?)"; PreparedStatement pstmt = con.prepareStatement(query); pstmt.setString(1, "sample_image"); FileInputStream fin = new FileInputStream("E:\\images\\cat.jpg"); pstmt.setBinaryStream(2, fin); pstmt.execute(); System.out.println("Record inserted ....."); } }आउटपुट
Connection established...... Record inserted ......
यदि आप MySQL Workbench का उपयोग करके रिकॉर्ड में Blob मान देखने का प्रयास करते हैं तो आप नीचे दिखाए अनुसार डाली गई इमेज देख सकते हैं:
