Java JDBC - 浏览数据库中的记录

时间:2016-12-18 14:55:53

标签: java swing jdbc

我在数据库中返回 NEXT 记录时遇到了一些麻烦,我的代码目前只返回输入的最后一条记录。我已经尝试创建List / ArrayList的实例,尝试将语句添加到我的 createStatement(); 并尝试了所有内容。我搜索过网络,然而,我似乎总是得到最后一个值。我希望是否有人可以帮助我。我正在使用.Swing,这都是在ActionListener中执行的。

基本上我希望这个函数获取数据库中的下一条记录。而不是返回最后一条记录。

nextEmployee.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {

        Connection connection = null;
        Statement statement = null;
        try {
            Class.forName("org.sqlite.JDBC");
            connection = DriverManager.getConnection("jdbc:sqlite:employeeDatabase.sqlite");
            connection.setAutoCommit(false);
            System.out.println("Read operation - database successfully opened");
            statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY,
                    ResultSet.CONCUR_READ_ONLY);
            ResultSet resultset = statement.executeQuery( "SELECT * from employees" );
            while (resultset.next()) {  
                ArrayList<Employee> selectAllEmployees = new ArrayList<Employee>();
                String id = resultset.getString("id");
                String  name = resultset.getString("name");
                String  email = resultset.getString("email");
                String  gender = resultset.getString("gender");
                String  dob = resultset.getString("dob");
                String  Address = resultset.getString("address"); 
                String  Postcode = resultset.getString("Postcode");
                String  NIN = resultset.getString("NIN");
                String  JobTitle = resultset.getString("JobTitle");
                String  StartDate = resultset.getString("StartDate");
                String  Salary = resultset.getString("Salary");
                idTextField.setText(id);
                nameTextField.setText(name);
                genderTextField.setText(gender);
                dobTextField.setText(dob);
                addressTextField.setText(Address);
                postcodeTextField.setText(Postcode);
                ninTextField.setText(NIN);
                jobtitleTextField.setText(JobTitle);
                startdateTextField.setText(StartDate);
                salaryTextField.setText(Salary);
                emailTextField.setText(email);


            }



            resultset.close();
            statement.close();
            connection.close();
        } catch ( Exception e1 ) {
            System.err.println( e1.getClass().getName() + ": " + e1.getMessage() );
            System.exit(0);
        }

        }});

感谢您的时间和精力。

1 个答案:

答案 0 :(得分:0)

正在发生两件事之一。之一:

  • 您在填充数据库的代码中有一个错误,因此您认为您在数据库中有行A,B和C,但实际上您只有行C

或者:

  • 您列出的代码使用行A的内容填充控件,然后重复以使用行B的内容填充完全相同的控件,然后使用行C的内容再次完全相同的控件。因此,自然,您剩下的值是最后一行的值。

有助于准确地思考你正在尝试做什么,准确地说是发生了什么,正是你期望发生的事情,最重要的是,是什么让你相信代码应该做你期望的那样做而不是实际做的事。