JDBC和ADO .NET

來源:互聯網
上載者:User

 我最先學習.NET,使用了大約三年後,就轉向在Java上開發程式。剛開始使用JDBC時,覺得其介面比較奇怪,奇怪的地方如下:
 1、PreparedStatement派生自Statement,但是Statement中的一些public的方法,例如execute(String sql)等方法,使不能被PreparedStatement的執行個體調用的。
 2、其參數的計數是從1開始的,而不是我們習慣使用的0。這是一個地雷,等著你去踩的,最初使用的人,通常都會踩中地雷,我想JDBC的設計者此時就會偷笑,哈哈!又有一個SB中招了……
 3、PreparedStatement的setString()方法,不區分NChar和Char,這使得一些資料庫的Driver無法支援NChar和NVarchar類型的資料。如Oracle 8i的JDBC Driver是明確寫了不支援NChar、NVachar2類型。在Oracle 9i的Driver中有一種專有的實現setFormOfUse(...),可以解決此問題,但如此一來,就不可以基於JDBC介面編程了,也無法更換JDBC Driver了。

 JDBC介面的設計者一定是一個整蠱專家!!

 ADO.NET 帶了一系列支援Disconnected訪問資料的類,包括DataSet、DataTable等,使得訪問資料很簡單,其介面也很方便使用。ADO.NET具備微軟產品使用簡單的優點,也和微軟產品的一貫作風一樣,顯得有點小家子氣。其中一點就是,雖然SqlClient、OracleClient、OleDb、Odbc等DbProvider都是繼承同樣的介面,但是這並不能使你可以在ADO.NET中基於介面編程。其中一個原因是,其不同的DbProvider的Sql的參數風格是不一樣的。SQL Server使用@ParameterName風格的具名引數,Oracle使用:ParameterName的風格,而OleDb和Odbc都使用匿名參數。天下大亂,一蹋糊塗!!!

 在ADO.NET中,更換DbProvider並不如JDBC那麼容易,可以說ADO.NET的開放性比JDBC差。ADO .NET 2.0似乎在這方面做了一些增強措施。但是還是不如JDBC!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.