我在数据库中返回 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);
}
}});
感谢您的时间和精力。
答案 0 :(得分:0)
正在发生两件事之一。之一:
或者:
有助于准确地思考你正在尝试做什么,准确地说是发生了什么,正是你期望发生的事情,最重要的是,是什么让你相信代码应该做你期望的那样做而不是实际做的事。