繁体   English   中英

如何使用条件检查SQLite表中是否存在行

[英]How to check if a row exist in the SQLite table with a condition

我在软件中使用SQLite本地数据库。 我想根据行的赋值者检查行是否存在。 例如: "SELECT * FROM ftp WHERE Host LIKE '"+ host +"' AND Username LIKE '"+ username +"' "

但是我想获得布尔结果,所以如果找到记录则执行某项操作,如果不执行其他操作。 头可以这样做吗?

这是我很累的事情,但这始终是正确的,因为它检查查询是否运行,而不查询是否返回数据。

public void ftpTableCheck(String host, String port, String username, String password){
    try{
        String query = "SELECT * FROM ftp WHERE Host LIKE '"+ host +"' AND Username LIKE '"+ username +"' ";
        PreparedStatement pst = conn.prepareStatement(query);

        if (pst.execute() == true){
            System.out.println("true");
        }
    }catch(Exception e){
        e.printStackTrace();
    }
}

知道如何解决吗? 谢谢

因此,您可以使用诸如select count(*) ...类的东西select count(*) ...select (count(*) > 0) as found ...作为基本查询。

调用executeQuery ,您将获得一个ResultSet作为回报,您需要确定它的内容。

在您的情况下,您只希望获得单行结果,因此您可以简单地使用ResultSet#next移至第一行,然后从中提取列值...

public void ftpTableCheck(String host, String port, String username, String password) {
    try {
        String query = "SELECT (count(*) > 0) as found FROM ftp WHERE Host LIKE ? AND Username LIKE ?";
        PreparedStatement pst = conn.prepareStatement(query);
        pst.setString(1, host);
        pst.setString(2, username);

        try (ResultSet rs = pst.executeQuery()) {
            // Only expecting a single result
            if (rs.next()) {
                boolean found = rs.getBoolean(1); // "found" column
                if (found) {
                    // You have rows
                } else {
                    // You have no rows
                }
            }
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

详细了解JDBC数据库访问使用预备语句

这样做的一般方法是获取结果并检查它是否不为空。 对于您的问题,对返回的行进行计数是合乎逻辑的。

正如@MadProgrammer所说,查询如下:

String query = "SELECT COUNT(*) FROM ftp WHERE Host LIKE '"+ host +"' AND Username LIKE '"+ username +"' ";

现在,您只需要获取计数并检查它是否为0(找不到)(找到)即可

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM