簡體   English   中英

循環僅返回第一行

[英]Loop only returns first row

我試圖將數據庫的結果加載到一個jtable中,但是當我運行代碼時,它只顯示第一行,然后出錯,沒有發現數據異常。 這是我的代碼;

try {

            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + "C:\\Users\\PMatope.FMBMW.000\\Documents\\Library.accdb";
            conn = DriverManager.getConnection(url, "", "");

            st = conn.createStatement();

            ResultSet rs = st.executeQuery("SELECT ID,full_name,sex,course,contact,email FROM Person");
            ResultSetMetaData data = rs.getMetaData();


            DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
           // jTable1.setModel(model);

             while (rs.next()) {

                  String id,fname,sex,course,contact,email;
                  id = rs.getString("ID");
                  fname = rs.getString("full_name");
                  sex = rs.getString("sex");
                  course = rs.getString("course");
                  contact = rs.getString("contact");
                  email = rs.getString("email");

                   model.addRow(new Object[] {id,fname,sex,course,contact,email});
                   model.fireTableDataChanged();
                   JOptionPane.showMessageDialog(null, rs.getString("sex"));
              }



        } catch (Exception e) {
             JOptionPane.showMessageDialog(null,"Message: "+ e.getMessage());
        }

你需要初始化

DefaultTableModel model = (DefaultTableModel) jTable1.getModel();

在您的while循環中

首先聲明您的表模型,並為每個循環時間創建一個新實例。

例如。

DefaultTableModel model = null;
           // jTable1.setModel(model);

             while (rs.next()) {

                  model = (DefaultTableModel) jTable1.getModel();

                  String id,fname,sex,course,contact,email;
                  id = rs.getString("ID");
                  fname = rs.getString("full_name");
                  sex = rs.getString("sex");
                  course = rs.getString("course");
                  contact = rs.getString("contact");
                  email = rs.getString("email");

                   model.addRow(new Object[] {id,fname,sex,course,contact,email});
                   model.fireTableDataChanged();
                   JOptionPane.showMessageDialog(null, rs.getString("sex"));
              }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM