个人记录贴。。。

代码过烂不宜参考。。

效果展示

1、选择需要打开的数据库,查看数据库下的表。

2、双击打开一个表

3、没有CRUD。。。。

代码

test-main:

import shell.DBList;

import javax.swing.*;
import java.awt.*;
import static javax.swing.JFrame.EXIT_ON_CLOSE; public class Test {
public static void main(String[] args){
EventQueue.invokeLater(() -> {
JFrame w = new DBList();
w.setDefaultCloseOperation(EXIT_ON_CLOSE);
w.setVisible(true);
});
}
}

DBList:

package shell;

import data.DataBase;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.*;
import java.util.ArrayList; /**
* Created by xkfx on 2017/1/31.
*/ public class DBList extends JFrame implements ActionListener, MouseListener { private JComboBox comboDatabases = new JComboBox();
private JList listTables = new JList(); String DBName = null; public DBList(){
// 窗体大小
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int screenWidth = screenSize.width;
int screenHeight = screenSize.height; setSize(screenWidth/6 , screenHeight/2);
setResizable(false); // 窗体位置
setLocationByPlatform(true); // 窗体布局
setLayout(new BorderLayout()); JScrollPane sp = new JScrollPane(listTables); add(comboDatabases , BorderLayout.NORTH);
add(sp , BorderLayout.CENTER); // 添加数据库列表
Connection cn = null;
Statement st = null;
ResultSet rs = null;
try{
cn = DataBase.getConnection();
st = cn.createStatement();
rs = st.executeQuery("show Databases"); while(rs.next()){
comboDatabases.addItem(rs.getString(1));
}
}catch(Exception e){}
finally {
try{
rs.close();
st.close();
cn.close();
}catch (Exception e){}
} // 注册事件监听
comboDatabases.addActionListener(this);
listTables.addMouseListener(this);
} @Override
public void actionPerformed(ActionEvent event) {
DBName = comboDatabases.getSelectedItem().toString(); Connection recentConn = null;
Statement st = null;
ResultSet rs = null;
String request = null;
ArrayList<String> tables = new ArrayList<>();
try{
recentConn = DataBase.getConnection();
st = recentConn.createStatement();
request = "show tables from " + DBName;
rs = st.executeQuery(request); while(rs.next()){
tables.add(rs.getString(1));
}
String[] temp = new String[tables.size()];
tables.toArray(temp);
listTables.setListData(temp); }catch(Exception e){}
finally {
try{
rs.close();
st.close();
recentConn.close();
}catch (Exception e){}
}
} @Override
public void mouseClicked(MouseEvent e) { } @Override
public void mousePressed(MouseEvent event) {
if(event.getClickCount() == 2){
String tableName = listTables.getSelectedValue().toString(); JFrame selectTable = new DBTable(DBName, tableName, this.getWidth()+this.getX(), this.getY());
selectTable.setVisible(true);
}
} @Override
public void mouseReleased(MouseEvent e) { } @Override
public void mouseEntered(MouseEvent e) { } @Override
public void mouseExited(MouseEvent e) { } @Override
public String toString() {
return "DBList{" +
"comboDatabases=" + comboDatabases +
", listTables=" + listTables +
", DBName='" + DBName + '\'' +
'}';
} @Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false; DBList dbList = (DBList) o; if (comboDatabases != null ? !comboDatabases.equals(dbList.comboDatabases) : dbList.comboDatabases != null)
return false;
if (listTables != null ? !listTables.equals(dbList.listTables) : dbList.listTables != null) return false;
return DBName != null ? DBName.equals(dbList.DBName) : dbList.DBName == null;
} @Override
public int hashCode() {
int result = comboDatabases != null ? comboDatabases.hashCode() : 0;
result = 31 * result + (listTables != null ? listTables.hashCode() : 0);
result = 31 * result + (DBName != null ? DBName.hashCode() : 0);
return result;
}
}

DBTable:

package shell;

import data.DbTableModel;

import javax.swing.*;
import javax.swing.table.TableModel;
import java.awt.*; /**
* Created by xkfx on 2017/2/1.
*/
public class DBTable extends JFrame { public DBTable(String dbName, String tableName, int X, int Y){ // JTable
TableModel model = new DbTableModel(dbName , tableName);
JTable table = new JTable(model);
JScrollPane sp = new JScrollPane(table); add(sp);
pack(); // 设置表格大小
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int screenWidth = screenSize.width;
int screenHeight = screenSize.height; setSize(screenWidth/2 , screenHeight/2);
setResizable(false); // 设置位置
setLocation(X , Y);
}
}

DbTableModel:

package data;

import javax.swing.table.*;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; /**
* Created by xkfx on 2017/2/2.
*/
public class DbTableModel extends AbstractTableModel{ //共享表格
ResultSet resultTable = null;
ResultSet resultColumns = null; // 获取对应表格
public DbTableModel(String DBName, String tableName){ Connection conn = null;
Statement st1 = null;
Statement st2 = null; try{
conn = DataBase.getConnection(DBName);
st1 = conn.createStatement();
st2 = conn.createStatement();
resultTable = st1.executeQuery("select * from "+ tableName);
resultColumns = st2.executeQuery("SHOW COLUMNS FROM "+ tableName);
}catch(SQLException e){
e.printStackTrace();
}
} @Override
public int getRowCount() {
try {
resultTable.last();
return resultTable.getRow();
} catch (SQLException e) {
e.printStackTrace();
return 0;
}
} @Override
public int getColumnCount() {
try {
return resultTable.getMetaData().getColumnCount();
} catch (SQLException e) {
e.printStackTrace();
return 0;
}
} @Override
public Object getValueAt(int rowIndex, int columnIndex) {
try {
resultTable.absolute(rowIndex + 1);
return resultTable.getObject(columnIndex + 1);
} catch (SQLException e) {
e.printStackTrace();
return null;
}
} @Override
public String getColumnName(int c){
try {
resultColumns.next();
System.out.println(resultColumns.getString(1));
return resultColumns.getString(1);
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
}

DataBase:

package data;

import java.sql.*;
import java.util.ResourceBundle; public class DataBase {
public static String URL;
public static String USERNAME;
public static String PASSWORD; public static String DRIVER;
private static ResourceBundle localInfo = ResourceBundle.getBundle("data.db-config"); //使用静态块加载驱动程序
static{ URL = localInfo.getString("jdbc.url");
USERNAME = localInfo.getString("jdbc.username");
PASSWORD = localInfo.getString("jdbc.password");
DRIVER = localInfo.getString("jdbc.driver");
try{
Class.forName(DRIVER);
}catch(ClassNotFoundException e){
e.printStackTrace();
}
} // 获取 mysql.connection 的两种静态方法
public static Connection getConnection(String dbName){ Connection cn = null;
try{
cn = DriverManager.getConnection(URL+dbName, USERNAME, PASSWORD);
}catch (SQLException e){
e.printStackTrace();
} return cn;
} public static Connection getConnection(){
return getConnection("");
} // unit test
public static void main(String[] args){
Connection cn = null;
Statement st = null;
ResultSet rs = null;
try{
cn = DataBase.getConnection();
st = cn.createStatement();
rs = st.executeQuery("show Databases"); while(rs.next()){
System.out.println(rs.getString(1));
}
}catch(Exception e){}
finally {
try{
rs.close();
st.close();
cn.close();
}catch (Exception e){}
}
}
}

db-config.properties:

jdbc.url=jdbc:mysql://localhost:3306/
jdbc.username=root
jdbc.password=****
jdbc.driver=org.gjt.mm.mysql.Driver

基于swing的MySQL可视化界面的更多相关文章

  1. linux安装mysql可视化界面

    之前是一直用shell交互界面,但是最近频繁地检查数据库中的数据感觉特别麻烦,便装了一个可视化工具. 安装: $ sudo apt-get install mysql-workbench [sudo] ...

  2. mysql 可视化界面操作指令

    1.让自增长从新开始 ALTER TABLE users auto_increment =1;//让表中的自增长从新从0开始 2.条件查询 SELECT name from  users WHERE ...

  3. 【转载】 使用Anemometer基于pt-query-digest将MySQL慢查询可视化

    原文地址:使用Anemometer基于pt-query-digest将MySQL慢查询可视化 作者:84223932 本文主要介绍使用Anemometer基于pt-query-digest将MySQL ...

  4. 一种基于Java Swing/HTML/MySQL的汽车租赁系统

    该项目是一个Java的课程作业(大二),主要运用Java.Swing.HTML.MySQL,实现基本的租车逻辑.界面可视化.信息导出.数据存储等功能.实现管理员.用户两种角色登录,并结合Java开发中 ...

  5. Ubuntu mysql安装,还有可视化界面

    安装mysql sudo apt-get install mysql-server sudo apt-get install mysql-client sudo apt-get install lib ...

  6. 总结使人进步,可视化界面GUI应用开发总结:Android、iOS、Web、Swing、Windows开发等

    可视化界面的软件,是21世纪最主流的应用类型了,黑屏控制台的不适合普通用户.   2004年左右的时候,作为普通网民,接触的自然是可视化,准确是Windows那一套.   那个时候,Microsoft ...

  7. 基于 HTML5 的 PID-进料系统可视化界面

    前言 随着工业物联网和互联网技术的普及和发展,人工填料的方式已经逐渐被机械设备取代.工业厂商减小误操作.提升设备安全以及追求高效率等制造特点对设备的要求愈加高标准.严要求.同时机械生产以后还需遵从整个 ...

  8. awt可视化界面上传数据到mysql,jsp通过jdbc方式查询数据库,并将结果打印在网页上

    今天尝试写一个小demo实现下之前看过的代码,目的了解不同文件的数据访问,掌握如何获取前台数据,如何将数据库的数据在前端页面展示. awt可视化界面可已实现提交数据到数据库,也可查询数据在控制台打印. ...

  9. Linux系统环境基于Docker搭建Mysql数据库服务实战

    开放端口规划: mysql-develop:3407 mysql-test: 3408 mysql-release: 3409 ps: 1.不推荐使用默认端口-3306,建议自定义端口 2.如果采用阿 ...

随机推荐

  1. Windows下Nutch的配置

    Nutch是一个开源的.Java实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具. Nutch可以分为2个部分: 抓取部分crawler 抓取程序抓取页面并把抓取回来的数据做成反向索引 搜 ...

  2. Android Graphviz 安装

    1. Windows下使用android ADT工具dmtracedump.exe绘图在windows下使用dmtracedump绘图时,出现如下错误: 'dot' 不是内部或外部命令,也不是可运行的 ...

  3. Android内存优化总结【整理】

    http://blog.csdn.net/tiantangrenjian/article/details/39182293 [前段时间接到任务着手进行app的内存优化,从各种各样的渠道搜索相关资料,最 ...

  4. js+jquery

    改变元素的不透明度 <!DOCTYPE html> <html> <head> <script> function ChangeOpacity(x) { ...

  5. mysql优化之explain备忘笔记

    今天使用explain来查看sql执行情况的时候发现有的东西忘掉了,故作此篇文章来强化此知识点的记忆. 1.explain作用 exlain 执行结果显示了mysql 存储引擎如何使用索引来处理sel ...

  6. java中生成流水号的一个例子(使用BerkeleyDB)

    package com.jiaoyiping.berkeleydb; import com.sleepycat.je.*; import com.sleepycat.utilint.StringUti ...

  7. SWT/JFace开发遇到org.eclipse.core.runtime.IProgressMonitor问题的解决办法(转载)

    今日正在使用SWT和JFace开发一个系统,在搭建JFace平台时遇到了一个问题,运行HelloWorld程序抛出org.eclipse.core.runtime.IProgressMonitor的n ...

  8. jhipser微服务架构介绍

    内容提要 本文涉及以下内容: 微服务架构介绍 spring cloud介绍 jhipster架构介绍 微服务架构介绍 微服务概念 微服务和SOA很相似,都是按照业务功能把系统拆分成一个一个的服务.比如 ...

  9. Windows Phone 自定义一个启动画面

    1.新建一个UserControl <UserControl x:Class="LoadingPage.PopupSplash" xmlns="http://sch ...

  10. jquery收集表单数组及去掉字符串最后的逗号!

    jquery收集表单数组: <input type='text' name='one[]' value='' /><br> <input type='text' name ...