讓MySQL與ASP.NET配合更強大
開放源代碼社區為了擴展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服務器以及其他一些選項。
一個連接字串告訴代碼使用指定的用戶名和密碼去連接一個名為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,環境下高度靈活的開發平臺。
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解