簡體   English   中英

我的查詢出了什么問題?? 完全沒有錯誤

[英]What is wrong with my query?? It has no error at all

我在Java中的SQL查詢有問題。 如下所示,該查詢應該返回rph_id,但它僅返回0,因此它僅繼續進行else方法。

起初,我沒有使用prepareStatement,但是許多建議我使用prepareStatement。 但這仍然行不通。 在檢查了兩個建議之后,我認為我的問題出在查詢上,但我不知道是什么。

    public class RphDAO{
    static int rph_id;

    public static RPHS getRph(RPHS rph) {    
                    try {
                        currentCon = ConnectionManager.getConnection();
                        ps=currentCon.prepareStatement("select * from rphs where rph_id=?");

                        ps.setInt(1, rph_id);
                        ResultSet rs = ps.executeQuery();

                        if (rs.next()) {
                            rs.getInt("rph_id");
                            rph.setRph_id(rph_id);
                            rph.setValid(true);
                        } else  {
                            rph.setValid(false);
                        }
                    }
                ...
                return rph;
            }
}

它應該返回一個現有的ID,而不是0。

這里:

if (rs.next()) {
  rs.getInt("rph_id");
  rph.setRph_id(rph_id);
  rph.setValid(true);

您從ResultSet rs ...中獲取一個值,然后將該結果丟棄。

可能您的意思是:

rph_id = rs.getInt("rph_id");

另一方面,您請求的那些條目具有rph_id == 1,因此我看不到您希望在這里找到除1以外的其他值。 最有可能的是,您想研究結果集的其他部分,並以某種方式將其拉入某個對象的變量/字段中。

好像 OP根本不熟悉使用ResultSet一樣,因此我認為真正的答案是:閱讀有關此主題的不錯的教程 您無法通過反復試驗來學習如何使用新的API。 閱讀其文檔,或者是一個很好的教程,向您展示如何正確使用它!

我認為您應該在SQL中使用COUNT來代替,因為如果它已經正確,則設置ID毫無意義,並且還應使用作為參數給定對象的ID來保持方法的一致性。

public static RPHS getRph(RPHS rph) {    
    try {
        currentCon = ConnectionManager.getConnection();
        ps=currentCon.prepareStatement("select COUNT(*) from rphs where rph_id=?");

        ps.setInt(1, rph.getRph_id);
        ResultSet rs = ps.executeQuery();

        int count = 0;
        if (rs.next()) {
            count = rs.getInt(1);
        }
        rph.setValid(count == 1);
    }

暫無
暫無

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

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