全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026及未来5年中国大堂用品市场现状数据分析及前景预测报告
- 2026四川国企招聘考试(工程管理)历年参考题库含答案详解
- 2026吉林省普通高等学校专升本招生考试(数据结构)历年参考题库含答案详解
- 2026吉林机关事业单位工人技术等级考试(车工·中级)历年参考题库含答案详解
- 2026吉林住院医师规范化培训考试(口腔科)历年参考题库含答案详解
- 2026卫生高级职称面审答辩(整形外科)历年参考题库含答案详解
- 2026卫生高级职称考试(微生物检验)历年参考题库含答案详解
- 2026卫生专业技术资格考试(重症医学-相关专业知识·主治医师)历年参考题库含答案详解
- 2026卫生专业技术资格考试(病理学技术-专业知识·初级师)历年参考题库含答案详解
- 2026卫生专业技术资格考试(口腔颌面外科学-专业知识·主治医师)线题库历年参考题库含答案详解
- 脚手架危大工程划分
- 肠系膜静脉血栓形成的护理查房
- 离婚不离家的协议书(2025版)
- 课本剧《儒林外史范进中举》剧本【3篇】
- 化学工程伦理
- 幼儿园防止欺凌工作小组职责
- 2.1.3碳酸钠和碳酸氢钠 课件 高一上学期化学人教版(2019)必修第一册
- 概率论与数理统计第四版-课后习题答案-盛骤-浙江大学
- 2024电力建设工程绿色建造评价规范
- 中职数学集合与不等式综合测试题
- 搬运装卸服务外包搬运装卸实施方案
评论
0/150
提交评论