Java + SQL Server : Resultset is null?

标签 java sql-server jdbc resultset

我刚开始使用 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;
}

我尝试运行这个,但遇到了这个

"Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException"

并且返回 diff 为 null。请告诉我这有什么问题以及如何解决这个问题。

最佳答案

PreparedStatement#executeQuery()不带参数,您不应该传递查询字符串。相反,请使用此模式:

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

这是使用 JDBC 时很常见的错误,部分原因是 Statement#executeQuery() 确实将查询字符串作为参数。添加到本教程,如 MkYong它犯了与OP相同的错误,很容易看出为什么这个错误如此普遍。

关于Java + SQL Server : Resultset is null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44784119/

相关文章:

sql - 如何在SQL中显示两个给定日期之间的所有日期

java - 如何使用 JDBC 获取 DEFAULT NULL?

java - 如何通过单击单选按钮将值从表传递到 servlet?

sql - 如何在 SQL Server 中匹配排除括号之间差异的文本?

不推荐使用 SQLOLEDB

mysql - 在 Eclipse 中单击按钮创建表

java - 有可能吗? 1) 连接到 Oracle 8i w/ojdbc5 或 ojdbc6 2) 多个 ojdbc jar

java - 有人可以解释 Math.ulp(double) 方法吗?

java - 无法使 R 扩展在 NetLogo 中工作

java - 从 JSF 2 数据表导出到电子表格