Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java+;SQL Server:结果集是否为空?_Java_Sql Server_Jdbc_Resultset - Fatal编程技术网

Java+;SQL Server:结果集是否为空?

Java+;SQL Server:结果集是否为空?,java,sql-server,jdbc,resultset,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 = ?;";

我不太熟悉将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中出现异常

返回的差异为空。请告诉我这有什么问题,如何解决。

不接受参数,您不应该传递查询字符串。而是使用以下模式:

PreparedStatement pstm = conn.prepareStatement(getdiffSQL); 
pstm.setInt(1, OrderID);
ResultSet rs = pstm.executeQuery();   // no parameter
这是使用JDBC时经常犯的错误,部分原因是它将查询字符串作为参数。向本教程中添加与OP相同的错误,很容易看出为什么此错误如此普遍。

不接受参数,您不应该传递查询字符串。而是使用以下模式:

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

这是使用JDBC时经常犯的错误,部分原因是它将查询字符串作为参数。向本教程中添加与OP相同的错误,很容易看出为什么此错误如此普遍。

当使用
PreparedStatement
调用
executeQuery()
,而不是
executeQuery(字符串查询)
。当使用
PreparedStatement
调用
executeQuery()
时,不是
executeQuery>(字符串查询)
。如果对
PreparedStatement
CallableStatement
调用
executeQuery(String)
(及其同级)时,JDBC 4.0(或更高版本)的正确实现应始终引发异常。如果
executeQuery(String),JDBC 4.0(或更高版本)的正确实现应始终引发异常
(及其同级)在
PreparedStatement
CallableStatement
上被调用。