当前位置: 代码迷 >> java >> 优雅地打印查询的结果
  详细解决方案

优雅地打印查询的结果

热度:78   发布时间:2023-07-25 19:15:32.0

我正在编写一个应用程序,用户可以在其中连接到 MySQL 数据库并执行一些查询。

我将结果放在 ResultSet 中,但找不到将结果打印到 textArea 的优雅方法。

java 是否有专门用于打印查询结果的类?

将表映射到类和结果查询。 例如,您的数据库中有一个用户表,您想要获取所有这些用户并将它们打印在 JTextArea 上。

public class User {

    private Long id;
    private String firstName;
    private String lastName;
    private String email;

    // constructors, getters and setters

    @Override
    public String toString() {
        return "ID: " + id +
        "\nFirst name: " + firstName +
        "\nLast name: " + lastName +
        "\nEmail: " + email;
    }
}

在你的 DAO 中:

public List<User> getAllUsers() {
    List<User> users = new ArrayList<>();

    try(Connection con = ConnectionHelper.get();
        Statement st = con.createStatement()) {
            String query = "SELECT * FROM User";
            ResultSet rs = st.executeQuery(query);

            // check if resultset is empty
            if(!rs.isBerforeFirst()) {
                throw new RuntimeException("Not users found");
            }
            // iterate over result set and wrap
            // data in User bean
            while(rs.next()) {
                User user = new User();
                user.setId(rs.getInt("id"));
                user.setFirstName(rs.getString("firstname"));
                user.setLastname(rs.getString("lastname"));
                user.setEmail(rs.getString("email"));
                users.add(user);
            }
    } catch(SQLException e) {
        throw new RuntimeException("Error when fetch users", e);
    }

    return users;
}

在您的控制器或视图中:

try {
    UserDao dao = new UserDao();
    List<User> allUsers = dao.getAllUsers();
    for(User user : allUsers) {
        textArea.append(user); // implicit call toString
    }

} catch(RuntimeException e) {
    // log 'Not users found' or 'Error when fetch users'
    Logger.getLogger(getClass().getName())
        .log(Level.SEVERE. e.getMessage());
    e.printStackTrace();
}
  相关解决方案