基于swing的MySQL可视化界面
个人记录贴。。。
代码过烂不宜参考。。
效果展示
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可视化界面的更多相关文章
- linux安装mysql可视化界面
之前是一直用shell交互界面,但是最近频繁地检查数据库中的数据感觉特别麻烦,便装了一个可视化工具. 安装: $ sudo apt-get install mysql-workbench [sudo] ...
- mysql 可视化界面操作指令
1.让自增长从新开始 ALTER TABLE users auto_increment =1;//让表中的自增长从新从0开始 2.条件查询 SELECT name from users WHERE ...
- 【转载】 使用Anemometer基于pt-query-digest将MySQL慢查询可视化
原文地址:使用Anemometer基于pt-query-digest将MySQL慢查询可视化 作者:84223932 本文主要介绍使用Anemometer基于pt-query-digest将MySQL ...
- 一种基于Java Swing/HTML/MySQL的汽车租赁系统
该项目是一个Java的课程作业(大二),主要运用Java.Swing.HTML.MySQL,实现基本的租车逻辑.界面可视化.信息导出.数据存储等功能.实现管理员.用户两种角色登录,并结合Java开发中 ...
- Ubuntu mysql安装,还有可视化界面
安装mysql sudo apt-get install mysql-server sudo apt-get install mysql-client sudo apt-get install lib ...
- 总结使人进步,可视化界面GUI应用开发总结:Android、iOS、Web、Swing、Windows开发等
可视化界面的软件,是21世纪最主流的应用类型了,黑屏控制台的不适合普通用户. 2004年左右的时候,作为普通网民,接触的自然是可视化,准确是Windows那一套. 那个时候,Microsoft ...
- 基于 HTML5 的 PID-进料系统可视化界面
前言 随着工业物联网和互联网技术的普及和发展,人工填料的方式已经逐渐被机械设备取代.工业厂商减小误操作.提升设备安全以及追求高效率等制造特点对设备的要求愈加高标准.严要求.同时机械生产以后还需遵从整个 ...
- awt可视化界面上传数据到mysql,jsp通过jdbc方式查询数据库,并将结果打印在网页上
今天尝试写一个小demo实现下之前看过的代码,目的了解不同文件的数据访问,掌握如何获取前台数据,如何将数据库的数据在前端页面展示. awt可视化界面可已实现提交数据到数据库,也可查询数据在控制台打印. ...
- Linux系统环境基于Docker搭建Mysql数据库服务实战
开放端口规划: mysql-develop:3407 mysql-test: 3408 mysql-release: 3409 ps: 1.不推荐使用默认端口-3306,建议自定义端口 2.如果采用阿 ...
随机推荐
- linux下串口调试工具/串口终端推荐: picocom(转)
对于picocom, kermit, minicom, picocom 最简单易用,也完全符合我的使用需求. 安装(mint / ubuntu):$ sudo apt-get install pico ...
- PHP之变量范围
前面的话 变量范围即它定义的上下文背景(也就是它的生效范围).在javascript中,并没有变量范围这一概念,相似的可能是作用域.但是,由于javscript使用的是词法作用域,指变量声明时的位置: ...
- php实现一个简单的购物网站
实现一个简单的购物网站 一.考试时间:8小时 二.开发工具:DW 三.数据库:见附件 四.需要实现的页面: Index:浏览商品页面,显示商品列表,用户可以点击“购买“. ViewCart:查看购物车 ...
- vue报错一
8080端口被占用 解决方案: 打开cmd输入:netstat -ano查看所有端口信息,如图,找到端口 8080,以及对应的 PID: 输入:tskill PID 即可杀死进程,ex:: tskil ...
- console输出图案
探索天猫控制台下的图案是怎么制作的 通过它的源码找到以下代码(还原解压代码) 自己也照葫画瓢搞了个以前公司的logo
- 拼接的html的onclick事件中无法传递对象给js方法的处理办法
如下: 拼接的html: " onclick=\"valDocName2('"+JSON.stringify(doc).replace(new RegExp(" ...
- java启动3个线程轮流打印数字
转自:http://blog.csdn.net/u014011112/article/details/50988769 http://blog.csdn.net/perrywork/article/d ...
- 沈阳网络赛F-Fantastic Graph【贪心】or【网络流】
"Oh, There is a bipartite graph.""Make it Fantastic." X wants to check whether a ...
- Oracle体系结构之Oracle分区
目录 Oracle分区 0 一.Oracle分区理论知识 1 二.分区表的实现方式 1 1.范围分区(range partition table) 1 2.列表分区(list partitioning ...
- 清空messages方法
1.du -sh /var/log/messages 2.losf /var/log/messages 3.cat /dev/null > /var/log/messages 4.du -sh ...