簡體   English   中英

通過使用帶有 SQL WHERE 子句的 Java 變量從結果集中獲取主鍵值

[英]Getting primary key value from resultset by using Java variable with SQL WHERE clause

我知道使用這樣的技術根本不是很好的做法,因為它很容易進行 SQL 次注入,但為了速度和測試,我目前正在這樣做。 我正在創建一個程序,它將用戶名 ip 和數據庫名稱保存到另一個數據庫。 但是,當我嘗試執行這樣的語句時:

ResultSet rs = stmt.executeQuery("SELECT LoginID, IPAddress FROM slavelogins WHERE IPAddress = '" + inputString + "';");
            String ClientID = String.valueOf(rs.getInt(1));
            System.out.println("Client ID: " + ClientID);
        } catch (SQLException err) {
            System.err.println("Error retrieving client id, please continue later!" + err);
            System.exit(0);

然后我遇到一個錯誤,它說該值在結果集開始之前,我相信這意味着沒有從數據庫中檢索到數據,有沒有辦法解決這個問題或解決這個問題的方法或我沒有的更簡單的方法意識到?

PS LoginID 是主鍵,如果這會產生任何問題。

上面的代碼檢索 loginid 並將其顯示為 'ClientID: ' + rs.getInt(1),其中 rs.getInt 應該是 loginID。

我也看到過關於在准備語句中使用占位符的帖子,但我還沒有看到任何關於 select 查詢的普通語句。

錯誤信息:

檢索客戶端 ID 時出錯,請稍后繼續。 java.sql:SQLException:結果集開始前

您可以將ResultSet視為已查詢行的 cursor。 無論它的 position 是什么,您都可以使用next()檢查那里是否還有另一行,並將 cursor 移動到它。

結果的第一行沒有什么不同 - ResultSet在第一行之前開始,您需要使用next()移動到該行:

if (rs.next()) {
    String clientID = String.valueOf(rs.getInt(1));
    System.out.println("Client ID: " + clientID);
} else {
    System.out.println("No such client");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM