java beforefirst_JAVA 表格组件 + rs.beforeFirst()使用

1 importjava.awt.BorderLayout;2 importjava.awt.event.ActionEvent;3 importjava.awt.event.ActionListener;4 importjava.awt.event.WindowAdapter;5 importjava.awt.event.WindowEvent;6 importjava.sql.CallableStatement;7 importjava.sql.Connection;8 importjava.sql.ResultSet;9 importjava.sql.SQLException;10 importjava.sql.Statement;11

12 importjavax.swing.JButton;13 importjavax.swing.JFrame;14 importjavax.swing.JOptionPane;15 importjavax.swing.JPanel;16 importjavax.swing.JScrollPane;17 importjavax.swing.JTable;18 importjavax.swing.table.DefaultTableModel;19 importjavax.swing.table.JTableHeader;20

21 public class TestTable extends JFrame implementsActionListener{22

23 JScrollPane jsp = new JScrollPane();//放置表格的面板

24 JTableHeader jth = new JTableHeader();//表头

25 JTable jtab ;//表格

26 JButton jbQuery = new JButton("查询");27 JButton jbDel = new JButton("删除");28

29 GetCon gc = new GetCon();//GetCon为实现了jdbc连接的类,具体参见???

30 Connection con;31 Statement sql;32 ResultSet rs;33

34 public static voidmain(String[] args) {35 newTestTable();36 }37

38 TestTable() {39 this.setSize(400,300);40 this.setLayout(newBorderLayout());41 this.add(jsp,BorderLayout.CENTER);42 JPanel j = newJPanel();43 j.add(jbQuery);44 j.add(jbDel);45 this.add(j,BorderLayout.SOUTH);46 jbQuery.addActionListener(this);47 jbDel.addActionListener(this);48 this.addWindowListener(newWindowAdapter() {49 public voidwindowClosing(WindowEvent arg0) {50 System.exit(0);51 }52 });53 setVisible(true);54 }55

56 public voidactionPerformed(ActionEvent e) {57 if(e.getSource() ==jbQuery){58 try{59 con =gc.getCon();60 //设置参数使结果集能还原

61 sql =con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);62 //查询数据库MyHotel中Hotel表中的所有信息

63 rs = sql.executeQuery("select * from MyHotel..Hotel ");64 int count = 0;//count用来记录表中的行数

65 while(rs.next()){66 count++;67 }68 //建立一个count行3列的数组来装表中数据

69 String[][] info = new String[count][3];70 count = 0;71 //之前结果集已经扫描完一遍Hotel表,使用rs.beforeFirst()来使结果集可以重新扫描全表来将数据存入info数组

72 rs.beforeFirst();73 while(rs.next()){74 info[count][0] = rs.getString("Hname");75 info[count][1] = rs.getString("Rmtype");76 info[count][2] = rs.getString("Price");77 count++;78 }79 con.close();80

81 String[] title = {"酒店名","房间类型","价格/元"};//title数组用来装表头内容82 //使表格不可编辑

83 DefaultTableModel tableModel = newDefaultTableModel(info,title){84 public boolean isCellEditable(int row,intcolumn) {85 return false;86 }87 };88

89 jtab = newJTable(tableModel);90 jth =jtab.getTableHeader();91 jsp.getViewport().add(jtab);92 }catch(SQLException e1) {93 e1.printStackTrace();94 }95 }else if(e.getSource() ==jbDel) {96 //得到选中的行

97 int row =jtab.getSelectedRow();98 DefaultTableModel model =(DefaultTableModel)jtab.getModel();99 //得到选中行的第一、二列的值

100 Object hname = model.getValueAt(row, 0);101 Object rmtype = model.getValueAt(row, 1);102 //从表格中删除选中行

103 model.removeRow(row);104

105 try{106 con =gc.getCon();107 //调用存储过程删除数据库中相应的行

108 CallableStatement cs = con.prepareCall("{call dbo.DelFromHotel(?,?)}");109 cs.setString(1, hname.toString());110 cs.setString(2, rmtype.toString());111 cs.executeUpdate();112 JOptionPane.showMessageDialog(null, "删除成功!");113 } catch(SQLException e1) {114 e1.printStackTrace();115 }116 }117

118 }119

120 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值