⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbshow.java

📁 在线考试系统设计
💻 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 + -