MySQL Data in JTable Tutorial
Hello Friends,
Nice to see you again.
- In Previous Sessions we have seen lots of Java Swing
- Today, we will see the example of showing data from
- Normally we have to develop application which have requirement
- In this type of situations, We can use JTable with showing
As there is no such direct method which provide you this facility at
once. So we have to write some sort of code to enable of filling JTable with
Data from Database.
It is very easy to understand the code for this.
- First remember that to fill JTable with any data, we required to
of Columns.
- So we here create one Default Table Model model and add two
- Now these both parameters (Data,Header) must be in int or
- Here I choose Vector as it is easy to fill it with Data from Database.
- Now simply pass that Vectors in Constructor of DefaultTableModel,
Here I have used MySQl database called 'test' and a table called 'one' as
shown below.
So be ready to learn this simple exmaple of MySQl Data in JTable.
After apply this code in action, you will be capable of using MySql
Database in your JTable based Swing Applications.
Output will be like this:
OK For this you have to create one class called dataInJTable.java and paste
the below code in it.
And run it....Simple right..?
------------------------------------------------------------------------------------------------------------------------------------------------
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
public class dataInJTable extends JFrame{
//This Vector Of A String Vector will be used to hold data from
// database table to display in JTable.
static Vector<Vector<String>> data=new Vector<Vector<String>>();
static JTable table;
public dataInJTable()
{
super("JTabe with MySql Database");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel topPanel=new JPanel();
JLabel label1=new JLabel("MySQL Database Name : test");
label1.setPreferredSize(new Dimension(200,30));
JLabel label2=new JLabel("MySQL Table Name : One");
label2.setPreferredSize(new Dimension(200,30));
topPanel.add(label1);
topPanel.add(label2);
getContentPane().add(topPanel,BorderLayout.NORTH);
Vector<String> headers=new Vector<String>();
headers.add("id");
headers.add("Name");
getData();
//this is the model which contain actual body of JTable
DefaultTableModel model = new DefaultTableModel(data, headers);
table=new JTable(model);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
header_size();
JScrollPane scroll = new JScrollPane(table);
scroll.setHorizontalScrollBarPolicy(
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scroll.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
getContentPane().add(scroll,BorderLayout.SOUTH);
pack();
setResizable(false);
setVisible(true);
}
/**
* Setting the particular Column Size in JTable
*/
public static void header_size() {
TableColumn column = table.getColumnModel().getColumn(0);
column.setPreferredWidth(100);
column = table.getColumnModel().getColumn(1);
column.setPreferredWidth(350);
}
/**
* Fetching Data From MySql Database
* and storing in a Vector of a Vector
* to Display in JTable
*/
private static void getData()
{
// Enter Your MySQL Database Table name in below Select Query.
String str="select * from one";
Connection cn;
ResultSet rs;
Statement st;
try {
// Change the database name, hosty name,
// port and password as per MySQL installed in your PC.
cn=DriverManager.getConnection("jdbc:mysql://" +
"localhost:3306/test","root","root");
st=cn.createStatement();
rs=st.executeQuery(str);
while(rs.next())
{
Vector <String> d=new Vector<String>();
d.add(rs.getString("id"));
d.add(rs.getString("name"));
d.add("\n\n\n\n\n\n\n");
data.add(d);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new dataInJTable();
}
}
--------------------------------------------------------------------
So I hope this code is helpful in understanding the working of JTable
with data from MySql Database.
Feel free to ask me if you have any dought regarding this.
You can also give me suggessions to improve this tutorial.
Leave comments if you like this post...!
Thank you.
Nirav Raval
----------------------------------------------------------------------------------
Follow Other Java Swing Tricks....
hey nice post, you make it seem so easy hope u post more on jtablehey nice post, you make it seem so easy hope u post more on jtable
ReplyDeletenice very helpfulnice very helpful
ReplyDeleteIt is my pleasure to know that I am helpful to you.
ReplyDeleteHi Nirav u done a splendid job..its very useful to us...
ReplyDeleteThank you very much...
ReplyDeletePosting yang sangat bermanfaat. Terima kasih.
ReplyDeleteThak kasih banyak. Senang mengetahui bahwa Indonesia juga menggunakan blog saya.
ReplyDeleteVery helpful! Thank you!
ReplyDeleteThanks very much for the post, but i was wondering how do you update the jtable dynamically each time data is inserted or deleted from the mysql table
DeleteHey Kale this is all the magic of JAVA...We are just using it...Thanks for your nice comment...!
DeleteVery helpful tutorial. Thank you very much
ReplyDeleteGood day.. i try to include it in one of my school projects but i'm wondering about the column header coz it doesn't seems to appear tnx..
ReplyDeletethis jtable is not really dynamic... (don't get offended, dude) maybe you should write something with model.setValueAt(...) to make it truely dynamic
ReplyDeleteFirst Thanks for leaving comment, Here I am posting this article for MySQL Dynamic Data transfer to JTable. Here JTable is a dynamic container for recieving MySQL Data. In this sense the data within MySQL is dynamic not the jTable itself. I hope this code will help you.
DeleteThank you.
Nice Post..
ReplyDeleteCan you suggest me How I can show data like this :
name class name class name class
abc 1 yr 2 p 3
hb 2 yu 33
d 5
means we can set the value of rows and if data more than row values the new column name and class added automatically..
Thanks in advance
Hi Parveen, First thanks for your comment. Here I am not able to understand your problem or query. Can you please explain it in a better way..?
ReplyDeletehi nirav good tutorials, can you help me with this problem.
ReplyDeletehttp://stackoverflow.com/questions/15921776/how-to-read-each-string-from-text-file-and-create-jtable#