PreparedStatement其實是相當於預處理,它會把語句進行分析後保存到緩存塊中,下次再執行該語句時就會快,適用於循環調用同一語句時.
Statement就是老老實實的執行語句,是不會進行預處理的.
最近開發出現一個問題,我們要調用語句生成一個臨時表#KK,然後調用存儲過程來訪問該表計算取數,如果用PreparedStatement來處理,如果每次用new的方法,則出現調用存儲過程時無法找到臨時表#KK,如果用同一個PreparedStatement,不重新創建實例,就可以在存儲過程訪問到臨時表,但句柄commit時會出現,多語句無法commit的錯誤提示,後來問人才知道,由於PreparedStatement做了預處理,當第二次調用存儲過程時,把原來第一句生成臨時表的語句給抹掉了,當commit時,受影響的數據找到了,但去找不到相關的語句進行commit所以報錯了.
此時就要用Statement,而且幾句語句用同一個Statement就可以解決這個問題