全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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-2026年九年级下零模语文试卷(含答案)
- 数字化转型下企业资产管理系统的深度剖析与创新实践
- 2026季华实验室测试中心招聘5人(广东)笔试参考题库及答案解析
- 2026年吉林四平市高职单招英语试题含答案
- 核磁教学讲解课件
- 铁路工地混凝土拌和站标准化管理实施意见(工管办函2013283号)
- 大学专业排名证明(模板)
- 空域规划与管理
- 2023年湖北通山城市发展(集团)有限责任公司招聘笔试题库含答案解析
- 医用辐射防护与安全(省辐射站)
- 循环流化床锅炉检修规程
- 拉丁舞比赛服饰装饰元素的演变,服装设计论文
- GB/T 10752-2005船用钢管对焊接头
评论
0/150
提交评论