1. 程式人生 > >如何把ResultSet的結果集,一表格的形式顯示,或以表格的形式輸出到控制檯!

如何把ResultSet的結果集,一表格的形式顯示,或以表格的形式輸出到控制檯!

今天在編寫一個小程式的時候,發現測試sql語句後,resultset結果集輸出格式總是有些問題,在程式碼改進過程中,突然想到可以把結果集封裝到JTable中,作為表格顯示,從網上百度了不少,發現總是有些問題,然後結合網上的案例,自己編寫了個測試文件,讓大家參考一下:package code;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.util.Vector;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.ScrollPaneConstants;import javax.swing.table.DefaultTableCellRenderer;import javax.swing.table.DefaultTableModel;/** * * @author ZhangLiang */public class BookModel { public static void main(String[] args) { getTestJTable("select * from UserDoc"); } public static void getTestJTable(String strSql){ JFrame f = new JFrame("Sql結果放入JTable"); try{ Connection conn = getConn(); PreparedStatement ps = conn.prepareStatement(strSql); ResultSet rs = ps.executeQuery(); ResultSetMetaData rsmd = rs.getMetaData(); int rsmdCount = rsmd.getColumnCount(); JTable table = new JTable(0, rsmdCount); //這裡應該是根據那個列數定義,或者是,普及後,然後寬度定義。 table.getTableHeader().setResizingAllowed(true); DefaultTableModel dataModel = (DefaultTableModel) table.getModel(); DefaultTableCellRenderer r = new DefaultTableCellRenderer(); r.setHorizontalAlignment(JLabel.CENTER); table.setDefaultRenderer(Object.class, r); int count = dataModel.getRowCount(); //這裡的count是個0 while (count > 0) { dataModel.removeRow(0); } while (rs.next()) { Vector v = new Vector(); for(int i=1;i<=rsmdCount;i++){ v.add(rs.getString(i)); } dataModel.addRow(v); } table.setModel(dataModel); //就差那個設定滾動條了。 //開始吧jtable放到那個jscroll中。 table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //自動設定寬度 table.setEnabled(false); JScrollPane scrollPane2 = new JScrollPane(table,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED ,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); scrollPane2.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); scrollPane2.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); f.add(scrollPane2); f.setSize(1024, 500); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); }catch(SQLException e){ } } public static Connection getConn() { String url = "jdbc:sqlserver://192.168.1.237:1433;DatabaseName=kh"; String username = "sa"; String password = "zl1110"; Connection conn = null; try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); conn = DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException | SQLException ex) { System.out.println("ERROR:"+ex.getMessage()); } return (conn != null) ? conn : null; }}