📄 dbshow.java
字号:
/*
* 创建日期 2006-5-25
* 作者:褚廷军
* 项目名称:学生考试系统;
* 项目要求:毕业设计;
* 模块名称:数据库信息显示模块
* 模块功能:连接数据库,用JTable显示数据库中所有表的信息,
* 可以根据需要选择相应的表
*
* 更改所生成文件模板为
* 窗口 > 首选项 > Java > 代码生成 > 代码和注释
*/
package tools;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
import java.util.*;
import javax.swing.table.*;
public class DBshow {
public DBshow() {
JFrame frame = new ResultSetFrame();
frame.show();
}
// public static void main(String[] args)
// {
// new DBshow();
// }
}
abstract class ResultSetTableModel extends AbstractTableModel {
public ResultSetTableModel(ResultSet aResultSet) {
rs = aResultSet;
try {
rsmd = rs.getMetaData();
} catch (SQLException e) {
System.out.println("Error " + e);
}
}
public String getColumnName(int c) {
try {
return rsmd.getColumnName(c + 1);
} catch (SQLException e) {
System.out.println("Error " + e);
return "";
}
}
public int getColumnCount() {
try {
return rsmd.getColumnCount();
} catch (SQLException e) {
System.out.println("Error " + e);
return 0;
}
}
protected ResultSet getResultSet() {
return rs;
}
private ResultSet rs;
private ResultSetMetaData rsmd;
}
class ScrollingResultSetTableModel extends ResultSetTableModel {
public ScrollingResultSetTableModel(ResultSet aResultSet) {
super(aResultSet);
}
public Object getValueAt(int r, int c) {
try {
ResultSet rs = getResultSet();
rs.absolute(r + 1);
return rs.getObject(c + 1);
} catch (SQLException e) {
System.out.println("Error " + e);
return null;
}
}
public int getRowCount() {
try {
ResultSet rs = getResultSet();
rs.last();
return rs.getRow();
} catch (SQLException e) {
System.out.println("Error " + e);
return 0;
}
}
}
class ResultSetFrame extends JFrame implements ActionListener {
private JLabel slabel;
private String user;
private String url;
private String driver;
private String password;
public ResultSetFrame() {
setTitle("数据库信息");
setSize(300, 200);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
}
});
Font font = new Font("楷体_GB2312", Font.LAYOUT_RIGHT_TO_LEFT, 18);
Container contentPane = getContentPane();
tableNames = new JComboBox();
tableNames.addActionListener(this);
JPanel p = new JPanel();
slabel = new JLabel("选择想要查询的表");
slabel.setFont(font);
slabel.setForeground(Color.BLUE);
p.add(slabel);
p.add(tableNames);
contentPane.add(p, "North");
try {
Properties ps = new Properties();
ps.load(getClass().getResourceAsStream("/db.properties"));
this.driver = ps.getProperty("driver");
this.url = ps.getProperty("url");
this.user = ps.getProperty("user");
this.password = ps.getProperty("password");
System.out.println(driver);
System.out.println(url);
System.out.println(user);
System.out.println(password);
} catch (Exception e) {
System.out.println(e);
}
try {
Class.forName(driver);
con = DriverManager.getConnection(url, user, password);
if (SCROLLABLE)
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
else
stmt = con.createStatement();
DatabaseMetaData md = con.getMetaData();
ResultSet mrs = md.getTables(null, null, null,
new String[] { "TABLE" });
while (mrs.next())
tableNames.addItem(mrs.getString(3));
mrs.close();
} catch (ClassNotFoundException e) {
System.out.println("Error " + e);
} catch (SQLException e) {
System.out.println("Error " + e);
}
}
public void actionPerformed(ActionEvent evt) {
if (evt.getSource() == tableNames) { // show the selected table from
// the combo box
if (scrollPane != null)
getContentPane().remove(scrollPane);
try {
String tableName = (String) tableNames.getSelectedItem();
if (rs != null)
rs.close();
String query = "SELECT * FROM " + tableName;
rs = stmt.executeQuery(query);
if (SCROLLABLE)
model = new ScrollingResultSetTableModel(rs);
else
model = new CachingResultSetTableModel(rs);
JTable table = new JTable(model);
scrollPane = new JScrollPane(table);
getContentPane().add(scrollPane, "Center");
pack();
doLayout();
} catch (SQLException e) {
System.out.println("Error " + e);
}
}
}
private JScrollPane scrollPane;
private ResultSetTableModel model;
private JComboBox tableNames;
private ResultSet rs;
private Connection con;
private Statement stmt;
private static boolean SCROLLABLE = false;
}
class CachingResultSetTableModel extends ResultSetTableModel {
public CachingResultSetTableModel(ResultSet aResultSet) {
super(aResultSet);
try {
cache = new ArrayList();
int cols = getColumnCount();
ResultSet rs = getResultSet();
while (rs.next()) {
Object[] row = new Object[cols];
for (int j = 0; j < row.length; j++)
row[j] = rs.getObject(j + 1);
cache.add(row);
}
} catch (SQLException e) {
System.out.println("Error " + e);
}
}
public Object getValueAt(int r, int c) {
if (r < cache.size())
return ((Object[]) cache.get(r))[c];
else
return null;
}
public int getRowCount() {
return cache.size();
}
private ArrayList cache;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -