異曲同工:MySQL與ASP.NET配合更強大(轉)

ba發表於2007-08-15
異曲同工:MySQL與ASP.NET配合更強大(轉)[@more@]由於富有競爭力的價格和易於使用,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,環境下高度靈活的開發平臺。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-958649/,如需轉載,請註明出處,否則將追究法律責任。

相關文章