JAVA 表格組件 + rs.beforeFirst()使用

來源:互聯網
上載者:User

標籤:message   set   jdbc   close   call   cte   apt   enter   int   

代碼:

  1 import java.awt.BorderLayout;  2 import java.awt.event.ActionEvent;  3 import java.awt.event.ActionListener;  4 import java.awt.event.WindowAdapter;  5 import java.awt.event.WindowEvent;  6 import java.sql.CallableStatement;  7 import java.sql.Connection;  8 import java.sql.ResultSet;  9 import java.sql.SQLException; 10 import java.sql.Statement; 11  12 import javax.swing.JButton; 13 import javax.swing.JFrame; 14 import javax.swing.JOptionPane; 15 import javax.swing.JPanel; 16 import javax.swing.JScrollPane; 17 import javax.swing.JTable; 18 import javax.swing.table.DefaultTableModel; 19 import javax.swing.table.JTableHeader; 20  21 public class TestTable extends JFrame implements ActionListener{ 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 void main(String[] args) { 35         new TestTable(); 36     } 37      38     TestTable() { 39         this.setSize(400,300); 40         this.setLayout(new BorderLayout()); 41         this.add(jsp,BorderLayout.CENTER); 42         JPanel j = new JPanel(); 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(new WindowAdapter() { 49             public void windowClosing(WindowEvent arg0) { 50                 System.exit(0); 51             }             52         });             53         setVisible(true);     54     } 55  56     public void actionPerformed(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 = new DefaultTableModel(info,title){ 84                         public boolean isCellEditable(int row,int column) { 85                             return false; 86                         } 87                     }; 88                  89                     jtab = new JTable(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 }

 

 

JAVA 表格組件 + rs.beforeFirst()使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.