




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
package databasevisit;import java.awt.BorderLayout;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import java.util.Vector;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTree;import javax.swing.ScrollPaneConstants;import javax.swing.tree.DefaultMutableTreeNode;import javax.swing.tree.DefaultTreeModel;public class DatabaseTableStructureViewerBasedOnTreeView /* * param args */public static void main(String args) / TODO Auto-generated method stubDemoWindow6 dw = new DemoWindow6(基于树状视图的的数据库表结构查看器);dw.setBounds(dw.getToolkit().getScreenSize().width / 3, dw.getToolkit().getScreenSize().height / 3,dw.getToolkit().getScreenSize().width / 3, dw.getToolkit().getScreenSize().height / 3);dw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);dw.setVisible(true);class DemoWindow6 extends JFrame implements ItemListener String db = master;/ 获取数据库结构信息DatabaseInfo di = new DatabaseInfo(db);JComboBox jcb = null;/ 显示数据库表结构的树状视图JTree jt = null;/ 设置树状视图的滚动条int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;JScrollPane jsp = null;public DemoWindow6(String title) super(title);/ 创建显示所有数据库名称的组合框jcb = new JComboBox(di.getDatabaseNames();/ 默认选中第一个数据库,即masterjcb.setSelectedIndex(0);/ 创建显示数据库表结构的树状视图jt = new JTree(di.getTablesInfo(db);/ 创建树状视图的滚动面板jsp = new JScrollPane(jt, v, h);/ 窗体布局add(jcb, BorderLayout.NORTH);add(jsp);/ 添加事件监听器jcb.addItemListener(this);public void itemStateChanged(ItemEvent e) / TODO Auto-generated method stubif (e.getStateChange() = ItemEvent.SELECTED) / 获取所选数据库的名称String selectdb = (String) jcb.getSelectedItem();/ 打开数据库连接di.init(selectdb);/ 设置树状视图显示新选数据库的表结构信息jt.setModel(new DefaultTreeModel(di.getTablesInfo(selectdb);/ 更新滚动面板jsp.setViewportView(jt);/ 获取数据库表结构信息类class DatabaseInfo / 数据库连接Connection con;public DatabaseInfo(String databaseName) / 打开数据库连接init(databaseName);public void init(String databaseName) try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);con = DriverManager.getConnection(jdbc:sqlserver:/localhost:1433;DatabaseName=+ databaseName, sa, jocean); catch (Exception e) / TODO Auto-generated catch blocke.printStackTrace();public Vector getDatabaseNames() Vector allDatabases = new Vector();try / 创建数据库命令Statement stm = con.createStatement();/ 获取所有数据库的名称ResultSet rs = stm.executeQuery(SELECT name FROM sys.databases);while (rs.next() allDatabases.add(rs.getString(name); catch (Exception e) System.out.println(e.getMessage();return allDatabases;/ 返回含有数据库表结构信息的嵌套树状视图节点public DefaultMutableTreeNode getTablesInfo(String databaseName) DefaultMutableTreeNode dmtn = new DefaultMutableTreeNode(databaseName);try / 获取数据库元数据信息DatabaseMetaData dmd = con.getMetaData();/ 获取关系表信息的结果集ResultSet res = dmd.getTables(null, null, null, null);/ 创建树状视图三个节点,分别包含数据库的三种结构信息,即系统表、用户表和视图DefaultMutableTreeNode systemTableNode = new DefaultMutableTreeNode(系统表);DefaultMutableTreeNode tableNode = new DefaultMutableTreeNode(用户表);DefaultMutableTreeNode ViewNode = new DefaultMutableTreeNode(视图);while (res.next() String objectName = res.getString(TABLE_NAME);/ 得到表类型String objectType = res.getString(TABLE_TYPE);/ 如果是系统表if (objectType.equals(SYSTEM TABLE) / 在系统表树状视图节点下添加对应的新节点DefaultMutableTreeNode subdm = new DefaultMutableTreeNode(objectName);systemTableNode.add(subdm);/ 继续添加该表的结构信息appendNode(dmd, subdm, objectName);/ 如果是用户表 else if (objectType.equals(TABLE) DefaultMutableTreeNode subdm = new DefaultMutableTreeNode(objectName);tableNode.add(subdm);appendNode(dmd, subdm, objectName);/ 如果是视图else if (objectType.equals(VIEW) DefaultMutableTreeNode subdm = new DefaultMutableTreeNode(objectName);ViewNode.add(subdm);appendNode(dmd, subdm, objectName);/ 在树状视图的根节点中添加系统表,用户表和视图3个节点dmtn.add(systemTableNode);dmtn.add(tableNode);dmtn.add(ViewNode); catch (Exception e) System.out.println(e.getMessage();return dmtn;/ 添加关系表结构信息的函数private void appendNode(Da
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025城市购房合同协议书简易版
- 2025电动车车行买卖合同
- 2025年借款合同模板示例
- 2024年陕西省高中学业水平合格考试英语试卷真题(含答案详解)
- 安徽省淮北市2025 届高三第二次质量检测思想政治试卷(含解析)
- 2025年中国农业银行担保借款合同模板
- 考研咨询师培训
- 交易居间服务合同示范
- 销售合同模板库
- 煤炭买卖合同协议
- 第15课《青春之光》课件-2024-2025学年统编版语文七年级下册
- 幼儿园大班数学:《层级分类》 课件
- 广东省肇庆市各县区乡镇行政村村庄村名明细及行政区划代码
- 缓和医疗精品课件
- 工程(产品)交付后顾客满意度调查表
- 项目定标审批表
- 体育市场营销(第三版)整套课件完整版电子教案课件汇总(最新)
- 弱电安装安全安全技术交底
- SJG 05-2020 基坑支护技术标准-高清现行
- T∕CHAS 10-4-9-2019 中国医院质量安全管理 第4-9部分:医疗管理危急值管理
- 动脉血气参数解释
评论
0/150
提交评论