Hi , Today we are going to see how to store an image in MySQL and how to retrieve the image and display it to the user using Swing.
So First we need MySQL Data base if you don't have you can download it from oracle website.
So this is the table we are going to create:
Table : image
create table image
( id varchar(20),
image longblob);
I have created this table under the schema name "test" in MySQL ,So from the code i will be accessing test schema for referring this table.
So we have two fields here one is id another one is image as type long blob which can store an image up to the size of 1 MB i guess.More then that will thrown an Exception.
Now ,we need to write our Java code to connect to this table and to store this image along with image file.
We also need Mysql-connector.jar .So download this jar and add it to the class path.
Code :
import java.awt.Toolkit;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FilenameFilter;
import java.sql.*;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileFilter;
public class StoreImage extends javax.swing.JFrame {
Connection connection=null;
PreparedStatement ps=null;
ResultSet rs=null;
String filePath=null;
public StoreImage() {
initComponents();
initConnection();
setSize(600,500);
}
public void retriveImage()
{
try
{
String val=jTextField1.getText();
if(val.length()>0)
{
ps=connection.prepareStatement("select * from image where id=?");
ps.setObject(1, val);
rs=ps.executeQuery();
byte b[] = null;
while(rs.next())
{
b= rs.getBytes(2);
}
jLabel6.setIcon(new ImageIcon (Toolkit.getDefaultToolkit().createImage(b)));
}else
{
JOptionPane.showMessageDialog(this,"Please enter ID..." );
}
}catch(Exception e)
{
}
}
//1048576 Size limit allowed for Image storage in MySQL.
public void storeImage()
{
try
{
JFileChooser chooser=new JFileChooser(new File("E:\\"));
chooser.setMultiSelectionEnabled(false);
chooser.setVisible(true);
chooser.showOpenDialog(this);
File file=chooser.getSelectedFile();
if(file!=null){filePath=file.getPath();}
if(filePath!=null){
jLabel5.setText("File:"+" "+filePath);
jLabel6.setIcon(new ImageIcon(filePath));
}
if(filePath!=null && check())
{
ps=connection.prepareStatement("insert into image values(?,?)");
FileInputStream fileInputStream=new FileInputStream(filePath);
byte b[]=new byte[fileInputStream.available()];
fileInputStream.read(b);
fileInputStream.close();
ps.setObject(1, jTextField1.getText());
ps.setBytes(2, b);
int val=ps.executeUpdate();
if(val>=1)JOptionPane.showMessageDialog(this, "Succesfully Stored...");
else
JOptionPane.showMessageDialog(this, "Error in storage...");
}
else
{
JOptionPane.showMessageDialog(this,"Please select an Image of type .jpeg/gif/jpg...");
}
}catch(Exception e)
{
JOptionPane.showMessageDialog(this, e.getMessage());
e.printStackTrace();
}
}
public void initConnection()
{
try
{
Class.forName("com.mysql.jdbc.Driver");
connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","ayaz");
System.out.println("Connection Established Succcesfully...");
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this, e.getMessage());
}
}
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jTextField1 = new javax.swing.JTextField();
jLabel5 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
jLabel6 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
getContentPane().setLayout(null);
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
jLabel1.setText("Store/Retive Image From MySQL");
getContentPane().add(jLabel1);
jLabel1.setBounds(90, 30, 220, 14);
jLabel2.setText("ID :");
getContentPane().add(jLabel2);
jLabel2.setBounds(60, 90, 18, 14);
jLabel3.setText("Select an Image :");
getContentPane().add(jLabel3);
jLabel3.setBounds(40, 130, 100, 14);
jButton1.setText("Browse");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
getContentPane().add(jButton1);
jButton1.setBounds(150, 123, 100, 30);
jButton3.setText("Show");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
getContentPane().add(jButton3);
jButton3.setBounds(130, 213, 80, 30);
getContentPane().add(jTextField1);
jTextField1.setBounds(150, 80, 90, 20);
jLabel5.setForeground(new java.awt.Color(255, 0, 0));
getContentPane().add(jLabel5);
jLabel5.setBounds(40, 170, 240, 30);
jScrollPane1.setViewportView(jLabel6);
getContentPane().add(jScrollPane1);
jScrollPane1.setBounds(330, 70, 210, 160);
pack();
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
storeImage();
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
retriveImage();
}
public static void main(String args[]) {
new StoreImage().setVisible(true);
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton3;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextField jTextField1;
// End of variables declaration
private boolean check() {
if(filePath!=null)
{
if(filePath.endsWith(".jpeg")||filePath.endsWith(".gif")||filePath.endsWith(".jpg")||filePath.endsWith(".JPEG")||filePath.endsWith(".GIF")||filePath.endsWith(".JPG"))
{
return true;
}
return false;
}
return false;
}
}
Result :
<< Prev Index Next>>
-------------------------------------------------------------------------------------

blogs
I saw the above example, very good one. can i get above example workspace?
ReplyDeleteGreat Article android based projects
DeleteJava Training in Chennai Project Center in Chennai Java Training in Chennai projects for cse The Angular Training covers a wide range of topics including Components, Angular Directives, Angular Services, Pipes, security fundamentals, Routing, and Angular programmability. The new Angular TRaining will lay the foundation you need to specialise in Single Page Application developer. Angular Training
this is helpful i hava a problem if in swing gui i want to remove the button when i click the button like in games how it is possible in mouse click method i write this method {contentPane.remove(button)} but may its not too much
ReplyDeletenice tutorial it was very useful to me
ReplyDeleteListen My Friends
ReplyDeleteThere are Two Correction We need to do in the above sourcecode
1. Remove initConnection() , instead this write drive creation and connection direct where we do database transaction.
2. After Insertion done successfully put filepath as null otherwise it take same file again and again.
Great Article
ReplyDeleteJava Web Services Online Training | Web Services Course | Web Services Training Courses | Java Web Services Training in Chennai | Online Java Training | Java Training in Chennai
This is quite educational arrange. It has famous breeding about what I rarity to vouch.
ReplyDeleteColossal proverb. This trumpet is a famous tone to nab to troths. Congratulations on a career well achieved.
This arrange is synchronous s informative impolite festivity to pity. I appreciated what you ok extremely here.
Selenium interview questions and answers
Selenium Online training
Selenium training in Pune
selenium training in USA
selenium training in chennai
Information from this blog is very useful for me, am very happy to read this blog Kindly visit us @ Luxury Watch Box | Shoe Box Manufacturer | Candle Packaging Boxes
ReplyDeleteIt is amazing and wonderful to visit your Blog.Thanks for sharing this information,this is useful to me.
ReplyDeleteOur Services are:- Digital Marketing Company | SEO Company | PPC Company | Mobile App Development Company | Mobile App Development Company Lucknow | Website Designing Company | Software Development | Social Media Marketing
Wonderful blog.. Thanks for sharing informative blog.. its very useful to me..
ReplyDeleteaws Training in Bangalore
python Training in Bangalore
hadoop Training in Bangalore
angular js Training in Bangalore
bigdata analytics Training in Bangalore
python Training in Bangalore
aws Training in Bangalore
Really it was an awesome article,very interesting to read.You have provided an nice article,Thanks for sharing.
ReplyDeleteaws Training in Bangalore
python Training in Bangalore
hadoop Training in Bangalore
angular js Training in Bangalore
bigdata analytics Training in Bangalore
python Training in Bangalore
aws Training in Bangalore
Really it was an awesome article,very interesting to read.You have provided an nice article,Thanks for sharing.
ReplyDeleteaws Training in Bangalore
python Training in Bangalore
hadoop Training in Bangalore
angular js Training in Bangalore
bigdata analytics Training in Bangalore
python Training in Bangalore
aws Training in Bangalore
Thanks for this wonderful blog it is really informative to all.keep update more information about this
ReplyDeleteaws Training in Bangalore
python Training in Bangalore
hadoop Training in Bangalore
angular js Training in Bangalore
bigdata analytics Training in Bangalore
python Training in Bangalore
aws Training in Bangalore
Thanks for sharing such an informative blog.Awaiting for your next update.
ReplyDeleteSelenium Training in chennai | Selenium Training in annanagar | Selenium Training in omr | Selenium Training in porur | Selenium Training in tambaram | Selenium Training in velachery
Good Post! , it was so good to read and useful to improve my knowledge as an updated one, keep blogging. After seeing your article I want to say that also a well-written article with some very good information which is very useful for the readers....thanks for sharing it and do share more posts like this.
ReplyDeleteData Science Online Training
ReplyDeleteGood Post! it was so good to read and useful to improve my knowledge as an updated one, keep blogging. After seeing your article, I want to say that also a well-written article with some very good information which is very useful for the AWS Online Training