Java + SQL 服务器:结果集为空?
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;
}
我试过运行这个但是我遇到了这个
"Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException"
并且 return 差异为空。请告诉我这有什么问题,我该如何解决。
PreparedStatement#executeQuery()
不带参数,您不应该传递查询字符串。而是使用这种模式:
PreparedStatement pstm = conn.prepareStatement(getdiffSQL);
pstm.setInt(1, OrderID);
ResultSet rs = pstm.executeQuery(); // no parameter
这是使用 JDBC 时犯的一个相当常见的错误,部分原因是 Statement#executeQuery()
does take the query string as a parameter. Add to this tutorials like MkYong 犯了与 OP 相同的错误,很容易看出为什么这个错误如此普遍。
我刚开始使用 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"
并且 return 差异为空。请告诉我这有什么问题,我该如何解决。
PreparedStatement#executeQuery()
不带参数,您不应该传递查询字符串。而是使用这种模式:
PreparedStatement pstm = conn.prepareStatement(getdiffSQL);
pstm.setInt(1, OrderID);
ResultSet rs = pstm.executeQuery(); // no parameter
这是使用 JDBC 时犯的一个相当常见的错误,部分原因是 Statement#executeQuery()
does take the query string as a parameter. Add to this tutorials like MkYong 犯了与 OP 相同的错误,很容易看出为什么这个错误如此普遍。