簡體   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