今天寫好久沒碰的PreparedStatement
,結果執行時出現
ORA-01008: 部份變數未被連結
錯誤。
錯誤原因是執行PreparedStatement
時呼叫到父介面Statement
的executeQuery(String sql)
,而非PreparedStatement
本身的executeQuery()
導致未綁定參數到執行的sql中所以造成錯誤。
錯誤程式範例如下。
public boolean findByOrderNo(String orderNo) throws {
String sql = "select * from ORDER where ORDER_NO = ?";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, orderNo);
rs = pstmt.executeQuery(sql); // <-- 這邊寫錯,要改為pstmt.executeQuery()
return toOrder(rs);
} catch (Exception e) {
e.printStackTrace();
}
}
沒有留言:
張貼留言