AdSense

網頁

2020/9/4

ORA-01008: 部份變數未被連結 not all variables bound

今天寫好久沒碰的PreparedStatement,結果執行時出現
ORA-01008: 部份變數未被連結錯誤。

錯誤原因是執行PreparedStatement時呼叫到父介面StatementexecuteQuery(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();
    }
}


沒有留言:

AdSense