java - 根据提供的 id 打印文章

标签 java sql jdbc prepared-statement persistence

我正在尝试根据提供的 ID 打印一篇文章。我有一个方法 getArticleById ,如果文章存在则返回该文章,如果不存在则返回 null 。我还有一个 start() 方法,它提示用户输入 ID 并打印文章(如果存在)。我不确定我是否正确实现了 getArticleById 。另外,我需要一些指导 start() 方法来检查输入的 id 是否存在。

public Article getArticleById(int id, Connection conn) throws SQLException {
    try (PreparedStatement stmt = conn.prepareStatement(
            "SELECT * FROM articles  WHERE id = ?")) {
        stmt.setInt(1, id);
        try (ResultSet r = stmt.executeQuery()) {
            if (r.next()) {
                return getAllArticles(conn).get(id);
            } else {
                return null;
            }
        } 
    }
}

private void start() throws IOException, SQLException {
    try (Connection conn = DBConnectionUtils.getConnectionFromSrcFolder("connection.properties")) {
        System.out.print("Enter the article id: > ");
        int id = Integer.parseInt(Keyboard.readInput());
    }
}

最佳答案

看起来不错,您只需在 start 中调用 getArticleById 方法即可:

private void start() throws IOException, SQLException {
    try (Connection conn = DBConnectionUtils.getConnectionFromSrcFolder("connection.properties")) {
        System.out.print("Enter the article id: > ");
        int id = Integer.parseInt(Keyboard.readInput());
        Article article = getArticleById(id, conn);
        // DO SOMETHING WITH ARTICLE
    }
}

希望这有帮助。

关于java - 根据提供的 id 打印文章,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56203409/

相关文章:

java - 我对 java 和 jdbc 中名为 .next() 的方法的作用感到困惑

java - 删除使用setNull不起作用

java - ElasticSearch Java 中的复合聚合

c# - 结果类型 'System.Tuple` 3[System.Guid,System.Int32,System.String]' 可能不是抽象的,必须包含默认构造函数

java - Android音频不会循环播放

sql - 如何监控SQL Server 2005上执行的sql语句

mysql - 想给mysql AND函数添加多个变量

java - JDBC 与 Oracle -executeUpdate 自动更改 AutoCommit 的状态

java - Getting WARN : SQL Error: 1205, SQLState : 41000 ERROR: Lock wait timeout exceeded; try restarting transaction. 使用hibernate保存记录

java - Apache Tomcat 未显示在 Eclipse 服务器运行时环境中