📄 resultsettable.java~57~
字号:
import java.awt.*;import java.awt.event.*;import java.io.*;import java.sql.*;import java.util.*;import javax.swing.*;import javax.swing.table.*;public class ResultSetTable{ public static void main(String[] args){ JFrame frame = new ResultSetTableFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); }}class ResultSetTableFrame extends JFrame{ public ResultSetTableFrame() { setTitle("ResultSet"); setSize(WIDTH, HEIGHT); Container contentPane = getContentPane(); tableNames = new JComboBox(); tableNames.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evt){ try{ if (scrollPane != null) getContentPane().remove(scrollPane); String tableName = (String)tableNames.getSelectedItem(); if(rs != null) rs.close(); String query = "SELECT * FROM " + tableName; rs = stat.executeQuery(query); if(scrolling) model = new ScrollingResultSetTableModel(rs); else model = new CachingResultSetTableModel(rs); JTable table = new JTable(model); scrollPane = new JScrollPane(table); getContentPane().add(scrollPane, BorderLayout.CENTER); pack(); doLayout(); } catch(SQLException e){ e.printStackTrace(); } } }); JPanel p = new JPanel(); p.add(tableNames); contentPane.add(p,BorderLayout.NORTH); try{ conn = getConnection(); DatabaseMetaData meta = conn.getMetaData(); if(meta.supportsResultSetConcurrency(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY)){ scrolling = true; stat = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); } else{ stat = conn.createStatement(); scrolling = false; } ResultSet tables = meta.getTables(null,null,null, new String[] {"TABLE"}); while(tables.next()) tableNames.addItem(tables.getString(3)); tables.close(); } catch(IOException e){ e.printStackTrace(); } catch(SQLException e){ e.printStackTrace(); } addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent event){ try{ conn.close(); } catch(SQLException e){ e.printStackTrace(); } } }); } public static Connection getConnection() throws SQLException,IOException{ Properties props = new Properties(); FileInputStream in = new FileInputStream("database.properties"); props.load(in); in.close(); String drivers = props.getProperty("jdbc.drivers"); if(drivers != null) System.setProperties("jdbc.drivers",drivers); String url = props.getProperty("jdbc.url"); String username = props.getProperty("jdbc.username"); String password = props.getProperty("jdbc.password"); return DriverManager.getConnection(url,username,password); } private JScrollPane scrollPane; private ResultSetTableModel model; private JComboBox tableNames; private ResultSet rs; private Connection conn; private Statement stat; private boolean scrolling; private static final int WIDTH = 400; private static final int HEIGHT = 300;}abstract class ResultSetTableModel extends AbstractTableModel{ public ResultSetTableModel(ResultSet aResultSet){ rs = aResultSet; try{ rsmd = rs.getMetaData(); } catch(SQLException e){ e.printStackTrace(); } }public String getColumnName(int c){ try{ return rsmd.getColumnName(c + 1); } catch(SQLException e){ e.printStackTrace(); return " "; }} public int getColumnCount(){ try{ return rsmd.getColumnCount(); } catch(SQLException e){ e.printStackTrace(); 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){ e.printStackTrace(); return null ; }}public int getRowCount(){ try{ ResultSet rs = getResultSet(); rs.last(); return rs.getRow(); } catch(SQLException e){ e.printStackTrace(); return 0; }}}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 + -