基于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.如果采用阿 ...
随机推荐
- chmod 777 修改权限
http://william71.blogbus.com/logs/33484772.html 在Unix和Linux的各种操作系统下,每个文件(文件夹也被看作是文件)都按读.写.运行设定权限.例如我 ...
- 使用reactjs遇到Warning: setState(...): Can only update a mounted or mounting component.
前端数据大部分来源于后端,需要向后端发起异步请求,而在使用reactjs的时候,如果这个组件最初加载的时候就发起这个异步请求,然后在返回结果中进行setState({}),这时候有可能会遇到这个警告: ...
- oracle11g+win7没有listener服务
今天在win7上面安装oracle11g的时候,配置了listener后,lsnrctl start报错. 查看服务,也没有发现listener服务. 各位有没有遇见过这个情况啊!!!!!
- win8.1简单快速安装phpnow的方法
工具/原料 phpnow 1.5.6 管理员身份登陆系统 方法/步骤 下载phpnow 这是必须的,大家可以自行百度下载,然后我们将phpnow放到一个文件夹,可以是根目录,也可以不是,但一定要知 ...
- java三方---->dom4j解析xml数据
Dom4j是一个易用的.开源的库,用于XML,XPath和XSLT.它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP.今天我们就开始Dom4j的学习. Dom4j的使用 ...
- CentOS7安装Openvswitch 2.3.1 LTS
CentOS7安装Openvswitch 2.3.0 LTS,centos7openvswitch 一.环境: 宿主机:windows 8.1 update 3 虚拟机:vmware 11 虚拟机操作 ...
- LeetCode——Convert Sorted Array to Binary Search Tree
Description: Given an array where elements are sorted in ascending order, convert it to a height bal ...
- Struts2中的OGNL详解 《转》
首先了解下OGNL的概念: OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的 ...
- JSTL中<c:set>标签的用法
<c:set>标签有两种不同的属性设置:var和target. var“版本”用于设置作用域属性,target“版本”用于设置bean属性或Map值. 这两个版本都有两种形式:有标签体和没 ...
- python的类继承与派生
一.继承和派生简介: 其实是一个一个事物站在不同角度去看,说白了就是基于一个或几个类定义一个新的类.比如定义了动物类接着派生出了人类,你也可以说人类继承了动物类.一个意思.此外python类似于C和C ...