jtree mysql_Mysql数据库 (JTree应用)

1 packagecom.databases.jtree;2

3 importjava.awt.FlowLayout;4 importjava.awt.GridLayout;5 importjava.awt.event.MouseAdapter;6 importjava.awt.event.MouseEvent;7 importjava.awt.event.MouseListener;8 importjava.sql.Connection;9 importjava.sql.DriverManager;10 importjava.sql.ResultSet;11 importjava.sql.ResultSetMetaData;12 importjava.sql.SQLException;13 importjava.sql.Statement;14 importjava.util.ArrayList;15

16 importjavax.swing.JFrame;17 importjavax.swing.JOptionPane;18 importjavax.swing.JPanel;19 importjavax.swing.JScrollPane;20 importjavax.swing.JTable;21 importjavax.swing.JTree;22 importjavax.swing.plaf.PanelUI;23 importjavax.swing.table.DefaultTableModel;24 importjavax.swing.tree.DefaultMutableTreeNode;25 importjavax.swing.tree.TreePath;26

27 public class MainFrame extendsJFrame {28 private Connection conn; //数据库连接对象

29 ResultSet rs;30 Statement st;31 privateJTree tree;32 ArrayList list = new ArrayList<>();33 privateDefaultMutableTreeNode databases;34 public staticJTable jtable;35 public staticJScrollPane jScrollPane;36

37 public static JPanel p1 = newJPanel();38 public static JPanel p2 = newJPanel();39 public static JPanel p3 = newJPanel();40

41 public static void main(String[] args) throwsSQLException {42 newMainFrame();43 }44

45 public MainFrame() throwsSQLException {46 super("数据库管理");47 this.setBounds(400, 300, 780, 480);48 this.setDefaultCloseOperation(EXIT_ON_CLOSE);49 this.getContentPane().setLayout(newFlowLayout(FlowLayout.LEFT));50 databases = new DefaultMutableTreeNode("数据库管理 ");51 tree = newJTree(databases);52 tree.setSize(600, 600);53 tree.setLocation(400, 300);54

55 p2.add(newJScrollPane(tree));56 p3.add(jScrollPane = newJScrollPane(jtable));57 p1.setLayout(new GridLayout(1, 2));58 p1.add(p2);59 p1.add(p3);60 this.add(p1);61

62 conDB("information_schema");63 String sql = "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA";64 rs =st.executeQuery(sql);65 while(rs.next()) {66 System.out.println(rs.getString("SCHEMA_NAME"));67 list.add(rs.getString("SCHEMA_NAME"));68 }69 closeDB();70

71 for (int i = 0; i < list.size(); i++) {72 DefaultMutableTreeNode roots = newDefaultMutableTreeNode(list.get(i));73 databases.add(roots);74 conDB("information_schema");75 String sql1 = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '" +list.get(i)76 + "';";77 rs =st.executeQuery(sql1);78 while(rs.next()) {79 System.out.println(rs.getString("TABLE_NAME"));80 DefaultMutableTreeNode tables = new DefaultMutableTreeNode(rs.getString("TABLE_NAME"));81 roots.add(tables);82 }83 closeDB();84 }85 MouseListener ml = newMouseAdapter() {86 public voidmousePressed(MouseEvent e) {87 int selRow =tree.getRowForLocation(e.getX(), e.getY());88 TreePath selPath =tree.getPathForLocation(e.getX(), e.getY());89 if (selRow != -1) {90 if (e.getClickCount() == 1) {91 try{92 mySingleClick(selRow, selPath);93 } catch(SQLException e1) {94 e1.printStackTrace();95 }96 System.out.println("长度" +selPath.getPathCount());97 }98 }99 }100 };101

102 tree.addMouseListener(ml);103 this.setVisible(true);104 }105 public void mySingleClick(int selRow, TreePath selPath) throwsSQLException {106 if (selPath.getPathCount() == 3) {107 String tableName =selPath.getLastPathComponent().toString();108 String databasesName = selPath.getPathComponent(1).toString();109 conDB(databasesName);110 JTable jtable = newJTable();111 jtable=query(tableName);112 p3.removeAll();113 jScrollPane = newJScrollPane(jtable);114 p3.add(MainFrame.jScrollPane);115 p3.updateUI();116 closeDB();117 }118 }119 //以下是连接数据库

120 public voidconDB(String DBName) {121 try{122 //加载数据库驱动

123 Class.forName("com.mysql.jdbc.Driver");124 } catch(ClassNotFoundException e) {125 JOptionPane.showMessageDialog(null, "数据库加载失败!");126 }127 try{128 //连接数据库

129 String url = "jdbc:mysql://localhost:3306/" + DBName + "";130 System.out.println(url);131 String user = "root";132 String passwd = "10521";133 conn =DriverManager.getConnection(url, user, passwd);134 st =conn.createStatement();135 } catch(SQLException e) {136 JOptionPane.showMessageDialog(null, "数据库连接失败!");137 }138 }139

140 //以下是关闭数据库

141 public voidcloseDB() {142 try{143 conn.close();144 } catch(SQLException e) {145 JOptionPane.showMessageDialog(null, "数据库关闭失败!");146 }147 }148

149 public JTable query(String table) throwsSQLException {150 DefaultTableModel tablemodel = newDefaultTableModel();151 String sql = "SELECT * FROM " + table + ";";152 Statement stmt = this.conn.createStatement(); //创建语句对象

153 ResultSet rest = stmt.executeQuery(sql); //执行数据查询SELECT语句

154 ResultSetMetaData rsmd = rest.getMetaData(); //返回表属性对象

155 int count = rsmd.getColumnCount(); //获得列数

156 for (int j = 1; j <= count; j++) //将各列名添加到表格模型作为标题,列序号>=1

157 tablemodel.addColumn(rsmd.getColumnLabel(j)); //将结果集中各行数据添加到表格模型

158 Object[] columns = new Object[count]; //创建对象数组,数组长度为列数

159 while (rest.next()) //迭代遍历结果集,从前向后访问每行

160 {161 for (int j = 1; j <= columns.length; j++) //获得每行各列值

162 columns[j - 1] =rest.getString(j);163 tablemodel.addRow(columns); //表格模型添加一行,参数指明各列值

164 }165 rest.close();166 stmt.close();167 return newJTable(tablemodel);168 }169 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值