java - 如何通过条件检查 SQLite 表中是否存在行

标签 java sql sqlite

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

但是我想获得 boolean 结果,因此如果找到记录则执行某些操作,如果没有则执行其他操作。锄头我能做到吗?

这是我厌倦的,但它总是正确的,因为它检查查询是否运行而不是它是否返回数据。

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(*) > 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 Database AccessUsing Prepared Statements了解更多详情

关于java - 如何通过条件检查 SQLite 表中是否存在行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29640246/

相关文章:

java - 出现错误 : The type java. util.Map$Entry 无法解决。它是从必需的间接引用的

java - openjdk1.7 : fail to list PKCS11 keystore aliases when BouncyCaSTLeProvider is used

java - 使用简单 XML 序列化 TimeUnit

java - 使用 PDF 渲染器打开后无法删除 pdf 文件

sql - sql中如何声明全局变量

php - 登录时如何处理不同类型的用户?

c# - MySqlCommand.LastInsertedId 是如何工作的?

vb.net - 如何在sqlite中创建非唯一索引?

java - 在java ContentValues中转义sqlite列名

java - SQLiteDatabase android 中的特殊字符