2011年11月24日 星期四

MySQL與ASP.NET配合更強大

經驗之談:MySQLASP.NET配合更強大
  開放源代碼社區為了擴展MySQL的使用範圍,開發出了.Net框架(.NET Framework)中可以使用的資料庫連接器。我們就來學習一下如何在.Net應用程式中使用MySQL
  開放源代碼社區為了擴展MySQL的使用範圍,開發出了.Net框架(.NET Framework)中可以使用的資料庫連接器。我們就來學習一下如何在.Net應用程式中使用MySQL
  由於富有競爭力的價格和易於使用,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伺服器以及其他一些選項。
  一個連接字串告訴代碼使用指定的用戶名和密碼去連接一個名為MySQLTestServerMySQL伺服器,並進入techrepublic資料庫。我在我的測試機上設定了允許匿名登陸(這樣的設定有非常大的安全漏洞,所以不建議你在生產伺服器上也這麼做),所以在範例中將會使用如下的連接字串:
  "server=localhost; database=sitepoint;"
  指定了連接字串後, MySqlConnection 物件的Open方法就被調用並打開連接。連接建立後,你就可以給MySQL資料庫發送命令或從資料庫獲得資料了。
  ASP.NETMySQL的組合
  讓我們更深入的討論一下結合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,及其他語言如UNIXLinux,環境下高度靈活的開發平臺。

沒有留言:

張貼留言