【发布时间】:2018-02-08 22:24:42
【问题描述】:
我正在尝试根据特定条件搜索表格。 SQL 查询在 SQL Developer 中执行时返回正确的结果(1 行)。在 JDBC 中,结果集不为空,但 resultset.next() 返回 false。
代码:
public static ArrayList<SearchRecord> searchRecords(Connection conn, int orderID) throws SQLException {
System.out.println("Order_id: " + orderID); //The correct orderID is passed
ArrayList<SearchRecord> searchResult = null;
SearchRecord searchRecord = null;
PreparedStatement search_pstm = null;
ResultSet search_rs = null;
if (conn != null) {
// This query is successfully executed in SQL Developer and outputs a row
String search_sql = "select d.PPS_NUM, a.BRC_ORD_ID, PROJECT_NUM, LICENSE_NUM, EXPIRY_DATE, FIRST_NAME, LAST_NAME, ADDRESS1, ADDRESS2, CITY, PROVINCE, POSTAL_CODE from VD_SHIP_AOR a, VD_BRC_ORD b, VD_CONSOL_VALID c, VD_SHIP d where a.brc_ord_id = b.brc_ord_id and b.CONSOL_VALID_ID= c.consol_valid_id and a.SHIP_ID = d.SHIP_ID and d.ORD_ID = b.ORD_ID and d.PPS_NUM = ?";
search_pstm = conn.prepareStatement(search_sql);
search_pstm.setInt(1, orderID);
search_rs = search_pstm.executeQuery();
searchResult = new ArrayList<SearchRecord>();
if (search_rs != null) {
System.out.println("Not null"); //Prints this
System.out.println(search_rs.isClosed()); //Prints false
System.out.println(search_rs.getRow()); //Prints 0
while (search_rs.next()) { //Does not enter the while loop, why?
System.out.println("Inside while rs.next");
//store resultset's data into arraylist
}
}
}
return searchResult;
}
我认为指的是:
Similar Stack Overflow question
但是现有的解决方案对我不起作用,请帮助我解决这个问题。
【问题讨论】:
-
有没有可能你已经在集合中的唯一结果上,并且没有下一条记录?
-
不,这不可能,我是第一次打开结果集!
-
调用getRow()后尝试执行search_rs.beforeFirst()
标签: java sql oracle jdbc resultset