检查数据库中是不是存在行,并返回布尔值

Posted

技术标签:

【中文标题】检查数据库中是不是存在行,并返回布尔值【英文标题】:Check if row exists in db, and return boolean检查数据库中是否存在行,并返回布尔值 【发布时间】:2020-11-11 23:53:17 【问题描述】:

我有这个函数,它接受一个名称并在数据库中检查是否存在具有该名称的行。但是,我不知道如何确定该行是否存在。

我现在的代码是

public static boolean rowExists(String player) throws SQLException 
    String sql = "SELECT EXISTS(SELECT * FROM currency WHERE name='"+player+"');";
    Bukkit.broadcastMessage(player);
    Statement stmt = con.createStatement();
    
    ResultSet up = stmt.executeQuery(sql);
    boolean nut = up.next();
    Bukkit.broadcastMessage("nut: " + nut + "  ");

    return nut;

nut 是布尔值,其中 true 表示条目存在,而 false 则不存在。 目前 nut 始终返回 true,无论该行是否存在。

【问题讨论】:

【参考方案1】:

简单的查询更好:

SELECT 1 FROM currency WHERE name=%s LIMIT 1

如果存在则返回单行 1,如果不存在则返回 0 行。

还要使用准备好的语句来避免 SQL 注入。

【讨论】:

以上是关于检查数据库中是不是存在行,并返回布尔值的主要内容,如果未能解决你的问题,请参考以下文章