shell:
package shell; import data.DataBase; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.*; import java.util.ArrayList; import java.util.Arrays; import java.util.Vector; /** * Created by xkfx on 2017/1/31. */ public class DBList extends JFrame implements ActionListener{ JComboBox cmbDatabase = new JComboBox(); JList lstTable = new JList(); public DBList(){ // 设置大小 Toolkit kit = Toolkit.getDefaultToolkit(); Dimension screenSize = kit.getScreenSize(); int screenHeight = screenSize.height; int screenWidth = screenSize.width; setSize(screenWidth/6 , screenHeight/2); setResizable(false); // 设置位置 setLocationByPlatform(true); // 设置外观 JScrollPane sp = new JScrollPane(lstTable); setLayout(new BorderLayout()); add(cmbDatabase , BorderLayout.NORTH); add(sp , BorderLayout.CENTER); // 添加数据库名称到comboBox Connection cn = null; Statement st = null; ResultSet rs = null; try{ cn = DataBase.getConnection(); st = cn.createStatement(); rs = st.executeQuery("show Databases"); while(rs.next()){ cmbDatabase.addItem(rs.getString(1)); } }catch(Exception e){} finally { try{ rs.close(); st.close(); cn.close(); }catch (Exception e){} } // 注册事件监听 cmbDatabase.addActionListener(this); } // 单元测试 public static void main(String[] args){ EventQueue.invokeLater(() -> { JFrame w = new DBList(); w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); w.setVisible(true); }); } @Override public void actionPerformed(ActionEvent event) { String selectDBName = cmbDatabase.getSelectedItem().toString(); // 向Db发送请求, 获取表集合, 并在list上显示 Connection cn = null; Statement st = null; ResultSet rs = null; String request = null; ArrayList<String> table = new ArrayList<>(); try{ cn = DataBase.getConnection(); st = cn.createStatement(); request = "show tables from " + selectDBName; rs = st.executeQuery(request); while(rs.next()){ table.add(rs.getString(1)); } String[] temp = new String[table.size()]; table.toArray(temp); lstTable.setListData(temp); }catch(Exception e){} finally { try{ rs.close(); st.close(); cn.close(); }catch (Exception e){} } } }
data:
package data; import java.sql.*; /** * Created by xkfx on 2017/1/31. */ public class DataBase { // 获取connection的两种静态方法 public static Connection getConnection(String dbName){ Connection cn = null; try{ Class.forName("org.gjt.mm.mysql.Driver"); cn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/" + dbName, "root", "19971019"); }catch (Exception e){ } 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){} } } }
遇到的问题:
1、确保导入mysql-connector-java-xxxx-bin.jar
2、sql语句容易出错,例如在组合String的时候漏掉空格
3、设置jlist的方法有很多种,具体参考api
未完成待更新。。。
原文:http://www.cnblogs.com/xkxf/p/6359047.html