如何把ResultSet的结果集,一表格的形式显示,或以表格的形式输出到控制台!
2017-01-03 14:18
441 查看
今天在编写一个小程序的时候,发现测试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; }}
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; }}
相关文章推荐
- 将ASP纪录集输出成n列的的表格形式显示的方法
- ASP输出成n列的表格形式显示的方法,多行多列
- 将ASP纪录集输出成n列的的表格形式显示的方法
- 将ASP纪录集输出成n列的的表格形式显示的方法
- 控制台程序读取WIKI形式的TXT文件并一表格的形式显示在Word中
- 将ASP纪录集输出成n列的的表格形式显示的方法
- 如何将控制台命令输出的内容显示在CEdit中
- AJAX编程技巧:在页面上中如何将受到的xml文件显示为表格的形式?
- GUI程序如何使用控制台输出调试信息[zz][MFC调用win32窗口显示调试信息,使用AllocConsole 函数 ]
- ASP输出成n列的表格形式显示的方法,多行多列
- sqlplus 如何显示输出到控制台的结果
- 将ASP记录集输出成n列的表格形式显示的方法
- AJAX编程技巧:在页面上中如何将收到的xml文件显示为表格的形式?
- [导入]将ASP纪录集输出成n列的的表格形式显示的方法
- 将ASP纪录集输出成n列的的表格形式显示的方法
- 将ASP记录集输出成n列的表格形式显示的方法
- 将ASP纪录集输出成n列的的表格形式显示的方法
- 从servlet中获取的ResultSet结果集如何传递到jsp页面并显示
- 如何以二进制形式向控制台输出文件内容
- .NET C# 如何监控并及时的显示另一个控制台Console的输出