मैंने डेटाबेस में संग्रहीत छवि को पुनर्प्राप्त करने के लिए निम्न कोड का प्रयास किया है। मैंने image_db
नामक डेटाबेस बनाया है जिसमें image_details
नामक एक तालिका शामिल है। तालिका में दो फ़ील्ड हैं, id
और image_path
और दोनों प्रकार mediumblob
हैं। मैंने image_path
फ़ील्ड में बाइनरी के रूप में कुछ छवियां संग्रहीत की हैं। अब मैं & इसे पुनर्प्राप्त करना चाहता हूं।java.sql.SQLException: परिणाम सेट की शुरुआत से पहले
package cbir.imageAddition;
import java.awt.Image;
import java.awt.Toolkit;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.*;
enter code here
public class ImageRetrieve {
public ImageRetrieve() throws SQLException, IOException, ClassNotFoundException
{
Connection con = null;
Statement st = null;
ResultSet rs = null;
String url = "jdbc:mysql://localhost:3306/";
String db = "image_db";
String driver = "com.mysql.jdbc.Driver";
String user = "root";
String pass = "root";
Class.forName(driver);
con = DriverManager.getConnection(url + db, user, pass);
//System.out.println("Connection url : "+url + db);
st = con.createStatement();
String sql = "select image_path from image_details where id=1";
rs = st.executeQuery(sql);
InputStream stream = rs.getBinaryStream(2);
ByteArrayOutputStream output = new ByteArrayOutputStream();
int a1 = stream.read();
while (a1 >= 0) {
output.write((char) a1);
a1 = stream.read();
}
Image myImage = Toolkit.getDefaultToolkit().createImage(output.toByteArray());
output.close();
}
}
मैं निम्नलिखित अपवाद है जब कोड ऊपर से चलाने के:
awtJan 12, 2012 12:55:48 AM cbir.imageAddition.add_image_window jButton5ActionPerformed
SEVERE: null
java.sql.SQLException: Before start of result set
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:841)
at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5650)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5570)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5610)
at cbir.imageAddition.ImageRetrieve.<init>(ImageRetrieve.java:49)
at cbir.imageAddition.add_image_window.jButton5ActionPerformed(add_image_window.java:280)
at cbir.imageAddition.add_image_window.access$400(add_image_window.java:26)
at cbir.imageAddition.add_image_window$5.actionPerformed(add_image_window.java:89)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6504)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6269)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4860)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java..EventDispatchThread.run(EventDispatchThread.java:90)
यह कैसे के कारण होता है और मैं इसे कैसे हल कर सकते हैं?
धन्यवाद @JB Nizet.it worked.But मैं एक अलग तरीके का इस्तेमाल किया पढ़ सकते हैं और छवि के रूप में प्रदर्शित करने के लिए:() विधि – nidheesh
मैं ResultSet.getBytes इस्तेमाल किया छवि और 'छवि img = Toolkit.getDefaultToolkit (पढ़ने के लिए) .createImage (imagedata); ' छवि बनाने के लिए विधि। तब मैंने छवि आकार को सेट आकार के द्वारा छवि आकार में सेट करके छवि को प्रदर्शित करने के लिए एक नया फ्रेम उपयोग किया है। अब मैं गैलरी के रूप में डेटाबेस में संग्रहीत छवियों को प्रदर्शित करना चाहता हूं। क्या वहां कोई सुविधाजनक तरीका है वह कर रहा??? – nidheesh