个人记录贴。。。

代码过烂不宜参考。。

效果展示

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. linux下串口调试工具/串口终端推荐: picocom(转)

    对于picocom, kermit, minicom, picocom 最简单易用,也完全符合我的使用需求. 安装(mint / ubuntu):$ sudo apt-get install pico ...

  2. PHP之变量范围

    前面的话 变量范围即它定义的上下文背景(也就是它的生效范围).在javascript中,并没有变量范围这一概念,相似的可能是作用域.但是,由于javscript使用的是词法作用域,指变量声明时的位置: ...

  3. php实现一个简单的购物网站

    实现一个简单的购物网站 一.考试时间:8小时 二.开发工具:DW 三.数据库:见附件 四.需要实现的页面: Index:浏览商品页面,显示商品列表,用户可以点击“购买“. ViewCart:查看购物车 ...

  4. vue报错一

    8080端口被占用 解决方案: 打开cmd输入:netstat -ano查看所有端口信息,如图,找到端口 8080,以及对应的 PID: 输入:tskill PID 即可杀死进程,ex:: tskil ...

  5. console输出图案

    探索天猫控制台下的图案是怎么制作的 通过它的源码找到以下代码(还原解压代码) 自己也照葫画瓢搞了个以前公司的logo

  6. 拼接的html的onclick事件中无法传递对象给js方法的处理办法

    如下: 拼接的html: " onclick=\"valDocName2('"+JSON.stringify(doc).replace(new RegExp(" ...

  7. java启动3个线程轮流打印数字

    转自:http://blog.csdn.net/u014011112/article/details/50988769 http://blog.csdn.net/perrywork/article/d ...

  8. 沈阳网络赛F-Fantastic Graph【贪心】or【网络流】

    "Oh, There is a bipartite graph.""Make it Fantastic." X wants to check whether a ...

  9. Oracle体系结构之Oracle分区

    目录 Oracle分区 0 一.Oracle分区理论知识 1 二.分区表的实现方式 1 1.范围分区(range partition table) 1 2.列表分区(list partitioning ...

  10. 清空messages方法

    1.du -sh /var/log/messages 2.losf /var/log/messages 3.cat /dev/null > /var/log/messages 4.du -sh ...