MySQL和ASP.NET配合更強大

  由於富有競爭力的價格和易於使用,MySQL在市場佔有率方面逐步提升。開放源代碼社區爲了擴展MySQL的使用範圍,研發出了.Net框架(.NET Framework)中能夠使用的數據庫連接器。我們就來學習一下如何在.Net應用程式中使用MySQL。

  每週三發佈的TechRepublic的.NET通訊,包含有網絡服務, ASP.NET, ADO.NET, 和 Visual Studio .NET相關的實用技巧和代碼實例. 現在就自動訂閱!

  MySQL漸漸的成爲了在選擇數據庫平臺時一個切實可行的數據庫方案。能夠證實這一點的就是許多公司都選擇mySQL作爲他們的數據庫平臺,例如 Google、美聯社(The Associated Press) 連同美國國家航空宇航局( NASA)。雖然對於一個開放源代碼來說,低廉的價格常常被當作主要長處來說服客戶,但是對於象Google那樣的大規模的組織來說,他們不會放心的把很有用的信息存放在一個只有價格優勢的數據庫產品中。MySQL真正的實力遠遠的超過了他的價格優勢,他提供了豐富的來自開放源代碼社區和商業化的附加工具。

  和.NET的數據整合

  MySQL 社區已研發出了MySQL的數據接口,他提供了連接數據源和程式代碼的基本功能。在Windows平臺上,有如下的MySQL連接器:

  * MySQL Connector/Net 1.0 (之前被稱爲ByteFX.Data):是個爲MySQL設計的開放源代碼.NET數據接口。他是完全用C#來研發的,我們能夠在在 MySQL.com網站上找到他。(注意:在本文的例子中,我們都會使用MySQL Connector/Net 1.0這個數據接口來連接數據庫,利用Windows安裝程式即可輕易安裝他,他的代碼實例和文檔也包含其中。)

  * MySQLDirect .NET Data Provider: 是個由 Core Lab 研發的商業數據接口。他的價格由購買的許可證的類型決定,但是我們能夠下載他的試用版。

  假如您使用 Mono,那麼在 Mono網站上能夠找到PHP連接器的下載。假如您在Windows平臺上運行Mono的話,您下載的連接器包含了安裝程式。假如不是的話,那就要根據您的操作系統的種類去下載合適的連接器了。

  使用MySQL數據接口

  安裝好MySQL的數據接口後,您必須在您的代碼中引入他才能使用。您能夠使用 MySql.Data.MySqlClient這個名空間來連接 MySQL 服務器。在C#中,能夠使用using語句來引入MySQL數據接口:

  using MySql.Data.MySqlClient;

  另外,您也能夠在一個ASP.NET的網頁表單(Web Form)中通過使用導入(Import)指令來引入MySQL數據接口:

  

  或,您也能夠在您的代碼裏在使用這個名空間時,寫全一個類的完整路徑,但是這樣的話會比使用Import指令來導入輸入更多的字符,浪費更多的字節。指定了名空間後,我們就能夠和MySQL數據庫進行數據交互了。 MySql.Data.MySqlClient這個名空間提供了許多用於處理MySQL數據的類。下面是這些類的一個樣本:

  * MySqlConnection: 管理和 MySQL 服務器/數據庫的連接;

  * MySqlDataAdapter: 一套用於填充DataSet對象和更新MySQL數據庫的命令和連接的集合;

  * MySqlDataReader: 讓您能夠從一個 MySQL 數據庫讀取數據。他是個單向的數據流;

  * MySqlCommand: 提供向數據庫服務器發送指令的功能;

  * MySqlException: 當發生問題時提供例外處理。

  我們會使用其中的一些類去和我們的範例數據庫進行數據交互。

  連接 MySQL 數據庫

  使用MySQL數據庫的第一步是要通過MySQLConnection類和數據庫建立連接。通過一個連接字串,MySqlConnection 將會被實例化成一個示例。連接字符串將告訴代碼到哪裏去找MySQL服務器連同其他一些選項。

  一個連接字串告訴代碼使用指定的用戶名和密碼去連接一個名爲MySQLTestServer的MySQL服務器,並進入techrepublic數據庫。我在我的測試機上設定了允許匿名登陸(這樣的設定有很大的安全漏洞,所以不建議您在生產服務器上也這麼做),所以在範例中將會使用如下的連接字串:

  "server=localhost; database=sitepoint;"

  指定了連接字串後, MySqlConnection 對象的Open方法就被調用並打開連接。連接建立後,您就能夠給MySQL數據庫發送命令或從數據庫獲得數據了。

  ASP.NET和MySQL的組合

  讓我們更深入的討論一下結合MySqlConnection類和其他的類來生成一個MySQL服務器上的數據庫列表。表 B列出了一個使用C#寫的ASP.NET的網頁表單。他建立了一個連接,接着給服務器下了一個指令(SHOW DATABASES),然後通過MySqlReader對象把結果顯示出來。

  用 MySqlCommand 對象向MySQL服務器發送 SHOW DATABASES 命令和直接在 MySQL 管理工具中輸入這個命令得結果是相同的。唯一的區別是,我們在代碼中必須使用另一個對象來獲取結果集。MySqlDataReader 對象在獲取結果時被實例化(通過 MySqlCommand 類的 ExecuteReader 方法)。MySqlDataReader 對象的 GetString 方法被用於通過ASP.NET的標籤控制來顯示結果集中的數據。GetString 方法的指針0指定了顯示結果集的當前行(在while循環中)的第一列數據。

  Mono提示

  假如您使用開放源代碼的Mono研發平臺,例子中的代碼只需要做小小的改變就能正常的運行。MySQL的數據接口在 ByteFX.Data.MySqlClient 這個空間名裏,而不是Windows上的MySql.Data.MySqlClient空間名。事實上 MySQL 的數據接口原來是由 ByteFX公司研發的,但是後被MySQL公司收購。所以假如您使用Mono的話,您必須這樣聲明空間名:

  using ByteFX.Data.MySqlClient;

  結語

  MySQL 和 .NET 的組合提供了一個強大的研發平臺。MySQL在開源社區得到了強大的技術支持,.NET也通過 Mono 而被開放源代碼社區所接受。這樣的組合提供了一個在Windows,及其他語言如UNIX或Linux,環境下高度靈活的研發平臺。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章