[an error occurred while processing this directive]

Retrieving JTree structure from database

                         

This example shows how to retrieving data from the database and how to add the data in to JTree.

JTree : JTree is used for viewing data in a list. Lists are good for displaying simple lists of information from which the user can make single or multiple selections. In list You can hide different  levels of data in the tree, including the root, allowing the display to collapse and expand various parts of the tree.

In this program we  are using stu_info table. The table can be created by the query as below:

CREATE TABLE `stu_info` ( 
`ID` int(11) NOT NULL auto_increment, 
`Name` varchar(20) default NULL, 
`Address` varchar(20) default NULL, 
`Phone` varchar(15) default NULL, 
PRIMARY KEY (`ID`) 
)

Now populate the table with the data as show below.

Now in the program below, access the database and retrieve the data from the table. This data can be used to populate the data for the node of the tree. Now nodes can be added to the tree. The program below "JTreeStructure" demonstrates all the steps required to create tree retrieving the data from the database.

Here is the full code for "JTreeStructure.java":

import java.awt.*;
import java.sql.*;
import java.util.*;

import javax.swing.*;
import javax.swing.tree.*;

public class JTreeStructure extends JFrame {

  Connection con = null;
  Statement st = null;
  ResultSet rs = null;

  public static void main(String args[]) throws Exception {
    new JTreeStructure();
  }

  public JTreeStructure() throws Exception {

    super("Retrieving data from database ");

    String driver = "com.mysql.jdbc.Driver";
    String url = "jdbc:mysql://192.168.10.59:3306/";
    String db = "Student";

    ArrayList list = new ArrayList();
    list.add("Roll Numbers");

    Class.forName(driver);
    con = DriverManager.getConnection(url + db, "root""root");

    try {
      String sql = "Select * from stu_info";

      st = con.createStatement();
      rs = st.executeQuery(sql);

      while (rs.next()) {
        Object value[] rs.getString(1), rs.getString(2),
            rs.getString(3), rs.getString(4) };
        list.add(value);
      }
    catch (Exception e) {
      System.out.println(e);
    }
    rs.close();
    st.close();
    con.close();

    Object hierarchy[] = list.toArray();

    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container content = getContentPane();

    DefaultMutableTreeNode root = processHierarchy(hierarchy);
    JTree tree = new JTree(root);
    content.add(new JScrollPane(tree), BorderLayout.CENTER);
    setSize(275300);
    setLocation(300100);
    setVisible(true);
  }

  private DefaultMutableTreeNode processHierarchy(Object[] hierarchy) {
    DefaultMutableTreeNode node = new DefaultMutableTreeNode(hierarchy[0]);
    DefaultMutableTreeNode child;
    for (int i = 1; i < hierarchy.length; i++) {
      Object nodeSpecifier = hierarchy[i];
      if (nodeSpecifier instanceof Object[]) // Ie node with children
      {
        child = processHierarchy((Object[]) nodeSpecifier);
      else {
        child = new DefaultMutableTreeNode(nodeSpecifier)// Ie Leaf
      }
      node.add(child);
    }
    return (node);
  }
}

Running the above program displays the output as below:

Output :

Download Source Code

                         

[an error occurred while processing this directive]