推 tw11509: visualvm jdbc profiler,要不然就用Debug模式追 02/10 22:48
→ ssccg: 不會替代掉,至少在JDBC層不會 02/10 23:11
→ ssccg: 對有支援parameterized query的DBMS(至少Oracle、MySQL都有 02/10 23:12
→ ssccg: ),driver實作通常就是SQL string和參數分別傳給DBMS 02/10 23:13
→ ssccg: 各DBMS的語法不同driver會處理,但是參數不會替代進去 02/10 23:14
→ ssccg: 是說"Prepared"Statement的原用意就是讓DBMS可以cache相同 02/10 23:15
→ ssccg: 的指令來跑多組參數用的啊 02/10 23:16
→ MarcoReus: 有個work around的解法是自己寫一個中繼層紀錄params 02/11 00:03
推 often897: P6SPY 02/11 00:45
→ tw11509: S大就說了很清楚了,不過剛剛用VisualVM測試了一下,會 02/11 01:58
→ tw11509: 處理後印出取代?後的SQL,方便你閱讀,最少你可以確 02/11 01:58
→ tw11509: 認是否送出去的東西有錯誤 02/11 01:58
→ tw11509: 有時候碰到這種問題可能需要檢查程式或相關設定是否有不 02/11 02:07
→ tw11509: 正確的地方 02/11 02:07
→ tw11509: 甚至你可以直接用完整的SQL語句來測試是否可以取得資 02/11 02:13
→ tw11509: 料,如果可以,那就代表原本的程式可能有問題;反之,你 02/11 02:13
→ tw11509: 可能要檢查DB相關的設定 02/11 02:13
推 jej: 我猜原po是要問preparedstatement.toString 02/12 18:49
→ jej: oracle沒有還原原始sql的樣子 02/12 18:49
→ jej: 如果問題是這個 可以用九樓的套件 02/12 18:52
→ jej: 或是用你上一篇的裝飾模式 02/12 18:52
→ jej: 包裝ojdbc實作preparedstatement那個物件 02/12 18:52
→ jej: 用其他樓所說的的方式達成 02/12 18:52
推 haha02: 以前用過log4jdbc 可以印出取代後的SQL 02/14 02:48