繁体   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