簡體   English   中英

Java + SQL Server:結果集為空?

[英]Java + SQL Server: Resultset is null?

我不熟悉將java與數據庫一起使用,並且一直在嘗試以下代碼:

public int getDateDiff(int OrderID) {
    Connection conn = DBConnection.getConnection();
    Integer diff = null;
    String getdiffSQL = "SELECT DATEDIFF( DAY , StartDate , EndDate ) FROM CarOrder WHERE OrderID = ?;";
    try {
        PreparedStatement pstm = conn.prepareStatement(getdiffSQL); 
        pstm.setInt(1, OrderID);
        ResultSet rs = pstm.executeQuery(getdiffSQL);
            while (rs.next()) {
                diff = rs.getInt(1);
            }
        }
     catch (SQLException ex) {
        System.out.println("Error: " + ex.getMessage());
    }
    return diff;
}

我嘗試運行此但遇到

“線程“ AWT-EventQueue-0”中的異常java.lang.NullPointerException”

並且return diff為null。 請告訴我這有什么問題以及如何解決。

PreparedStatement#executeQuery()不帶參數,因此您不應傳遞查詢字符串。 而是使用以下模式:

PreparedStatement pstm = conn.prepareStatement(getdiffSQL); 
pstm.setInt(1, OrderID);
ResultSet rs = pstm.executeQuery();   // no parameter

使用JDBC時,這是一個相當普遍的錯誤,部分原因是Statement#executeQuery() 確實將查詢字符串作為參數。 MkYong這樣的教程添加了與OP相同的錯誤,並且很容易理解為什么這個錯誤如此普遍。

暫無
暫無

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

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