我只是想知道OracleCallableStatement和CallableStatement在性能和有效性方面的區別。OracleCallableStatement V/S CallableStatement
2
A
回答
1
OracleCallableStatement
是一個Oracle特定的接口,它最終擴展了標準接口java.sql.CallableStatement
。
除非需要訪問該接口中特定於Oracle的功能,否則不應在代碼中引用它,而應僅將代碼寫入CallableStatement
接口。這對所有JDBC代碼來說都是一個很好的實踐,並且可以讓您的應用程序在驅動程序和數據庫之間移植。
沒有性能或效率差異 - 您實際上使用的是相同的東西。
1
OracleCallableStatement擴展了CallableStatement,所以OracleCallableStatement也是一個CallableStatement。性能完全沒有區別,但如果您不需要Oracle的特殊(和非標準)功能,請繼續使用CallableStatement,這將幫助您更輕鬆地更改數據庫。順便說一下,您會發現更多熟悉CallableStatement的開發人員比後者更熟悉。
+1
另一個需要注意的是使用連接池,一些JDBC池,有一個功能來彙集準備好的語句(並且可調用語句也是一個準備好的語句)。我相信您不能將您從池中獲得的CallableStatement轉換爲OracleCallableStatement(除了通過代理主對象實現的池之外)。 – 2012-02-26 17:06:44
相關問題
- 1. java.sql.ARRAY到ArrayList <String[]> OracleCallableStatement
- 2. CallableStatement與聲明
- 3. JDBC CallableStatement問題
- 4. 的CallableStatement arrayindexoutofbound
- 5. 作爲查詢的存儲過程:CallableStatement vs. PreparedStatement
- 6. 關閉resultSet和callableStatement
- 7. callablestatement to as400 not working
- 8. 關閉一個CallableStatement
- 9. 如何註冊表的CallableStatement
- 10. JDBC - Statement,PreparedStatement,CallableStatement和caching
- 11. Java獲得輸出CallableStatement JDBC
- 12. 錯誤PL /與CallableStatement的
- 13. CallableStatement是否真的免疫SQL注入?
- 14. CallableStatement在PostgreSQL上帶有參數名
- 15. JTDS:Unicode參數使用CallableStatement with sendStringParametersAsUnicode = false
- 16. Java Callablestatement不會等到.execute()結束
- 17. 的PreparedStatement,CallableStatement的和性能考慮
- 18. JDBC CallableStatement和Oracle SYS_REFCURSOR IN參數?
- 19. 的Java與C# - CallableStatement的轉換
- 20. 的CallableStatement + +的registerOutParameter多行結果
- 21. CallableStatement無法識別OUT參數
- 22. JDBC CallableStatement存儲過程CURSOR結果集獲取
- 23. 如何從CallableStatement獲取所有參數綁定信息?
- 24. 使用CallableStatement調用HSQLDB IDENTITY函數以獲取輸出
- 25. 長時間運行CallableStatement無需等待執行
- 26. Jaybird CallableStatement的不執行,直到獲得輸出參數
- 27. java CallableStatement打印過程中的所有參數
- 28. 使用嵌套SQL查詢設置多個CallableStatement變量
- 29. 字符編碼使用callablestatement或jdbctemplate進行mysql插入
- 30. CallableStatement PostgreSQL:無效的參數數量錯誤
當然,這隻適用於如果你關心可移植性。而如果你想使用Oracle特定的擴展? – cagcowboy 2012-02-26 17:00:27
@cagcowboy:你應該總是關心可移植性。如果Oracle重寫其驅動程序並更改該接口會怎樣? – skaffman 2012-02-26 17:02:04
不,OCS也是一個接口。如果你需要使用匿名的PL/SQL塊...你可以使用OCS,否則只需使用CS – 2012-02-26 17:02:15